guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 01/03: Adapt run-server* to change to `accept'.


From: Andy Wingo
Subject: [Guile-commits] 01/03: Adapt run-server* to change to `accept'.
Date: Sun, 23 Oct 2016 20:34:19 +0000 (UTC)

wingo pushed a commit to branch master
in repository guile.

commit 206dced87f425af7eed628530313067a45bee2c2
Author: Andy Wingo <address@hidden>
Date:   Wed Oct 19 22:28:26 2016 +0200

    Adapt run-server* to change to `accept'.
    
    * module/system/repl/server.scm (run-server*): Adapt to new #f return
      value of accept on non-blocking ports.
      (errs-to-retry): Remove variable.
---
 module/system/repl/server.scm |   34 +++++++++-------------------------
 1 file changed, 9 insertions(+), 25 deletions(-)

diff --git a/module/system/repl/server.scm b/module/system/repl/server.scm
index ff9ee5c..b1b8a6b 100644
--- a/module/system/repl/server.scm
+++ b/module/system/repl/server.scm
@@ -78,15 +78,6 @@
     (bind sock AF_UNIX path)
     sock))
 
-;; List of errno values from 'select' or 'accept' that should lead to a
-;; retry in 'run-server'.
-(define errs-to-retry
-  (delete-duplicates
-   (filter-map (lambda (name)
-                 (and=> (module-variable the-root-module name)
-                        variable-ref))
-               '(EINTR EAGAIN EWOULDBLOCK))))
-
 (define* (run-server #:optional (server-socket (make-tcp-server-socket)))
   (run-server* server-socket serve-client))
 
@@ -107,22 +98,15 @@
           shutdown-read-pipe))
 
   (define (accept-new-client)
-    (catch #t
-      (lambda ()
-        (let ((ready-ports (car (select monitored-ports '() '()))))
-          ;; If we've been asked to shut down, return #f.
-          (and (not (memq shutdown-read-pipe ready-ports))
-               (accept server-socket))))
-      (lambda k-args
-        (let ((err (system-error-errno k-args)))
-          (cond
-           ((memv err errs-to-retry)
-            (accept-new-client))
-           (else
-            (warn "Error accepting client" k-args)
-            ;; Retry after a timeout.
-            (sleep 1)
-            (accept-new-client)))))))
+    (let ((ready-ports (car (select monitored-ports '() '()))))
+      ;; If we've been asked to shut down, return #f.
+      (and (not (memq shutdown-read-pipe ready-ports))
+           ;; If the socket turns out to actually not be ready, this
+           ;; will return #f.  ECONNABORTED etc are still possible of
+           ;; course.
+           (or (false-if-exception (accept server-socket)
+                                   #:warning "Failed to accept client:")
+               (accept-new-client)))))
 
   ;; Put the socket into non-blocking mode.
   (fcntl server-socket F_SETFL



reply via email to

[Prev in Thread] Current Thread [Next in Thread]