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:
@ -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))))
|
||||
|
||||
Reference in New Issue
Block a user