diff options
| author | Andy Wingo <wingo@pobox.com> | 2017-02-12 20:57:29 +0100 |
|---|---|---|
| committer | Andy Wingo <wingo@pobox.com> | 2017-02-12 20:57:29 +0100 |
| commit | cb94fcc26e1b3b61ba95739c6301d417de571df4 (patch) | |
| tree | dc39f632bbcb7eb1a4a3758959c1c7853039e47d | |
| parent | Cope with migration of initial fiber (diff) | |
| download | guile-fibers-cb94fcc26e1b3b61ba95739c6301d417de571df4.tar.gz | |
Gracefully handle EPIPE
* fibers/web/server.scm (client-loop): Avoid error when reading from
shut-down socket (EPIPE). Perhaps a read that gives EPIPE should
produce an EOF object anyway.
| -rw-r--r-- | fibers/web/server.scm | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fibers/web/server.scm b/fibers/web/server.scm index 9f50277..e2f6dab 100644 --- a/fibers/web/server.scm +++ b/fibers/web/server.scm @@ -181,7 +181,9 @@ on the procedure being called at any particular time." (lambda () (let loop () (cond - ((eof-object? (lookahead-u8 client)) + ((catch #t + (lambda () (eof-object? (lookahead-u8 client))) + (lambda _ #t)) (close-port client)) (else (call-with-values @@ -203,8 +205,7 @@ on the procedure being called at any particular time." (when body (put-bytevector client body)) (force-output client) - (if (and (keep-alive? response) - (not (eof-object? (lookahead-u8 client)))) + (if (keep-alive? response) (loop) (close-port client)))))))))) (lambda (k . args) |
