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*)))