Added code to add ourself to the CMU CL' startup herald.

Added option to start-http-listener to specify the use of SO_REUSEADDR
as a socket option.
This commit is contained in:
2001-03-20 23:40:33 +00:00
parent 9d215d8f1d
commit 0aab94aa24

View File

@ -59,7 +59,7 @@
(defvar *fd-addresses* (make-hash-table))
#-MP
(defun start-http-listener (port server)
(defun start-http-listener (port server &key reuse-address)
(labels ((read-handler (socket)
(let ((address (gethash socket *fd-addresses*)))
(system:remove-fd-handler (gethash socket *fd-handlers*))
@ -75,7 +75,8 @@
(setf (gethash socket *fd-addresses*) remote-host
(gethash socket *fd-handlers*)
(system:add-fd-handler socket :input #'read-handler)))))
(let ((fd (ext:create-inet-listener port)))
(let ((fd (ext:create-inet-listener port :stream
:reuse-address reuse-address)))
(setf (gethash fd *fd-handlers*)
(system:add-fd-handler fd :input #'accept-handler)))))
@ -85,14 +86,16 @@
t)
#+MP
(defun http-listener (port server)
(let ((fd (ext:create-inet-listener port)))
(defun http-listener (port server reuse-address)
(let ((fd (ext:create-inet-listener port :stream
:reuse-address reuse-address)))
(unwind-protect
(progn
(setf (process-name *current-process*)
(format nil
"HTTP connection listener on port ~D with server ~A"
port server))
#+CLASH-DEBUG
(format t "~&;;; Started lisp connection listener on ~
port ~d for server ~A~%" port server)
(loop
@ -121,10 +124,16 @@
(when fd (unix:unix-close fd)))))
#+MP
(defun start-http-listener (port server)
(make-process #'(lambda () (http-listener port server))))
(defun start-http-listener (port server &key reuse-address)
(make-process #'(lambda () (http-listener port server reuse-address))))
#+MP
(defun initialize-clash (&optional (idle-process mp::*initial-process*))
(setf mp::*idle-process* idle-process))
;;; Update Herald
(setf (getf ext:*herald-items* :clash)
(list " CLASH HTTP Server Toolkit "
#'(lambda (stream)
(write-string (clash-version-string) stream))))