From 0aab94aa24d3b34de98e5b8d5911533db7d4152c Mon Sep 17 00:00:00 2001 From: "Pierre R. Mai" Date: Tue, 20 Mar 2001 23:40:33 +0000 Subject: [PATCH] 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. --- src/drivers/simple-cmu.cl | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/drivers/simple-cmu.cl b/src/drivers/simple-cmu.cl index 780abb1..6862e5e 100644 --- a/src/drivers/simple-cmu.cl +++ b/src/drivers/simple-cmu.cl @@ -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))))