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