diff --git a/tcp.scm b/tcp.scm index 5a9e2e1..c829efd 100644 --- a/tcp.scm +++ b/tcp.scm @@ -587,12 +587,6 @@ EOF (##sys#check-exact port) (let ((addr (make-string _sockaddr_in_size)) (s (##net#socket _af_inet _sock_stream 0)) ) - (define (fail) - (##net#close s) - (##sys#update-errno) - (##sys#signal-hook - #:network-error 'tcp-connect (##sys#string-append "cannot connect to socket - " strerror) - host port) ) (when (eq? -1 s) (##sys#update-errno) (##sys#signal-hook @@ -608,7 +602,11 @@ EOF (cond ((eq? errno _einprogress) (let loop2 () (let ((f (##net#select-write s))) - (when (eq? f -1) (fail)) + (when (eq? f -1) + (##net#close s) + (##sys#signal-hook + #:network-error 'tcp-connect (##sys#string-append "cannot connect to socket - " (general-strerror (##sys#update-errno))) + host port)) (unless (eq? f 1) (when tmc (##sys#thread-block-for-timeout! @@ -625,7 +623,11 @@ EOF (loop2) ) ) )) ((eq? errno _eintr) (##sys#dispatch-interrupt loop)) - (else (fail) ) ))) + (else + (##net#close s) + (##sys#signal-hook + #:network-error 'tcp-connect (##sys#string-append "cannot connect to socket - " (general-strerror (##sys#update-errno))) + host port))))) (let ((err (get-socket-error s))) (cond ((fx= err -1) (##net#close s)