[hunchentoot-devel] [PATCH] handle ACCEPTOR-SHUTDOWN-P correctly

Desmond O. Chang dochang at gmail.com
Sun Mar 20 09:33:17 UTC 2011


After stopping an acceptor with STOP, one can't start it again with
START, because the START method doesn't reset the value of
acceptor-shutdown-p to NIL, so the listener returns/quits instantly.

Also, the default value of ACCEPTOR-SHUTDOWN-P should be T, because
every acceptor should be closed when it is created.

See [1] & [2] for details.

[1] http://article.gmane.org/gmane.lisp.lib.tbnl.general/2469
[2] http://article.gmane.org/gmane.lisp.lib.tbnl.general/2868
---
 acceptor.lisp |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/acceptor.lisp b/acceptor.lisp
index ba90e2e..168c9b9 100644
--- a/acceptor.lisp
+++ b/acceptor.lisp
@@ -120,7 +120,7 @@ connections.")
 		   :documentation "Number of pending connections
           allowed in the listen socket before the kernel rejects
           further incoming connections.")
-   (acceptor-shutdown-p :initform nil
+   (acceptor-shutdown-p :initform t
                         :accessor acceptor-shutdown-p
                         :documentation "A flag that makes the acceptor
 shutdown itself when set to something other than NIL.")
@@ -266,6 +266,7 @@ they're using secure connections - see the SSL-ACCEPTOR class."))
 ;; general implementation
 
 (defmethod start ((acceptor acceptor))
+  (setf (acceptor-shutdown-p acceptor) nil)
   (start-listening acceptor)
   (let ((taskmaster (acceptor-taskmaster acceptor)))
     (setf (taskmaster-acceptor taskmaster) acceptor)
-- 
1.7.4.1





More information about the Tbnl-devel mailing list