summaryrefslogtreecommitdiff
path: root/examples/ping-server.scm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/ping-server.scm')
-rw-r--r--examples/ping-server.scm14
1 files changed, 5 insertions, 9 deletions
diff --git a/examples/ping-server.scm b/examples/ping-server.scm
index d2873e3..cdc8519 100644
--- a/examples/ping-server.scm
+++ b/examples/ping-server.scm
@@ -23,19 +23,18 @@
(ice-9 rdelim)
(ice-9 match))
-(define (set-nonblocking! port)
- (fcntl port F_SETFL (logior O_NONBLOCK (fcntl port F_GETFL)))
- (setvbuf port 'block 1024))
-
(define (make-default-socket family addr port)
(let ((sock (socket PF_INET SOCK_STREAM 0)))
(setsockopt sock SOL_SOCKET SO_REUSEADDR 1)
(fcntl sock F_SETFD FD_CLOEXEC)
(bind sock family addr port)
- (set-nonblocking! sock)
+ (fcntl sock F_SETFL (logior O_NONBLOCK (fcntl sock F_GETFL)))
sock))
(define (client-loop port addr store)
+ (setvbuf port 'block 1024)
+ ;; Disable Nagle's algorithm. We buffer ourselves.
+ (setsockopt port IPPROTO_TCP TCP_NODELAY 1)
(let loop ()
;; TODO: Restrict read-line to 512 chars.
(let ((line (read-line port)))
@@ -50,11 +49,8 @@
(define (socket-loop socket store)
(let loop ()
- (match (accept socket)
+ (match (accept socket SOCK_NONBLOCK)
((client . addr)
- (set-nonblocking! client)
- ;; Disable Nagle's algorithm. We buffer ourselves.
- (setsockopt client IPPROTO_TCP TCP_NODELAY 0)
(spawn-fiber (lambda () (client-loop client addr store))
#:parallel? #t)
(loop)))))