From 2c1b13bd6008f1b2598adf5cc5c3b966caf279ca Mon Sep 17 00:00:00 2001 From: sperber Date: Tue, 19 Jun 2001 10:48:45 +0000 Subject: [PATCH] Catch not-connected error to SHUTDOWN-SOCKET. Close socket upon finish. --- ftpd.scm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ftpd.scm b/ftpd.scm index 2f4ab03..9e8f969 100644 --- a/ftpd.scm +++ b/ftpd.scm @@ -78,7 +78,18 @@ (lambda () (handle-connection (socket:inport socket) (socket:outport socket)) - (shutdown-socket socket shutdown/sends+receives)))) + (call-with-current-continuation + (lambda (exit) + (with-errno-handler* + (lambda (errno packet) + (cond + ;; I dunno why SHUTDOWN-SOCKET can die this way, but it + ;; can and does + ((= errno errno/notconn) + (exit 'fick-dich-ins-knie)))) + (lambda () + (shutdown-socket socket shutdown/sends+receives) + (close-socket socket)))))))) port))) @@ -781,7 +792,7 @@ ; Version -(define *ftpd-version* "$Revision: 1.5 $") +(define *ftpd-version* "$Revision: 1.6 $") (define (copy-port->port-binary input-port output-port) (let ((buffer (make-string *window-size*)))