From 9c560cf537d5eeacb7546df5e38fde847057169a Mon Sep 17 00:00:00 2001 From: mainzelm Date: Tue, 10 Jul 2001 11:49:06 +0000 Subject: [PATCH] Merge from 0.6: handler for bind-listen-accept-loop, which closes the socket. --- scsh/network.scm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/scsh/network.scm b/scsh/network.scm index 929f0eb..8f94d0a 100644 --- a/scsh/network.scm +++ b/scsh/network.scm @@ -80,9 +80,23 @@ (set-socket-option sock level/socket socket/reuse-address #t) (bind-socket sock addr) (listen-socket sock 5) - (let loop () - (call-with-values (lambda () (accept-connection sock)) proc) - (loop)))) + (with-handler + (lambda (condition more) + (with-handler + (lambda (condition ignore) (more)) + (lambda () (close-socket sock))) + (more)) + (lambda () + (let loop () + (with-errno-handler + ;; ECONNABORTED we just ignore + ((errno packet) + ((errno/connaborted) (loop))) + (call-with-values + (lambda () (accept-connection sock)) + proc) + (loop))))))) + ;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ;;; Socket Record Structure