From d559c6e063b861717ab4902d707fa8a2dbaeca46 Mon Sep 17 00:00:00 2001 From: Thomas Hintz Date: Sun, 9 Mar 2014 10:40:34 -0700 Subject: [PATCH] Handle shutdown more gracefully. --- cl-init.lisp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/cl-init.lisp b/cl-init.lisp index c6ca16c..839a59e 100644 --- a/cl-init.lisp +++ b/cl-init.lisp @@ -18,15 +18,19 @@ (apply *start-thunk* nil) (format t "external process running~%") - ; wait for stop signal - (let* ((socket (ccl:make-socket :local-port *shutdown-port* :connect :passive)) - (stream (ccl:accept-connection socket))) ; wait for anything - (close stream) - (close socket)) - - (format t "stopping external process~%") - (apply *stop-thunk* nil) - (format t "external process stopped~%stopping swank~%") - (swank:stop-server *swank-port*) - (format t "swank stopped~%") + (ccl:with-open-socket (socket :connect :passive + :format :text + :local-port *shutdown-port* + :reuse-address t) + (with-open-stream (stream (ccl:accept-connection socket)) + (format t "stopping external process~%") + (apply *stop-thunk* nil) + (format t "external process stopped~%stopping swank~%") + (swank:stop-server *swank-port*) + (format t "swank stopped~%") + (princ "server shutdown complete" stream))) + (ccl:quit)) + +(defparameter socket (ccl:make-socket :local-port 6200 :connect :passive)) +(defparameter stream (ccl:accept-connection socket))