summaryrefslogtreecommitdiff
path: root/web/socket/server.scm
diff options
context:
space:
mode:
Diffstat (limited to 'web/socket/server.scm')
-rw-r--r--web/socket/server.scm10
1 files changed, 6 insertions, 4 deletions
diff --git a/web/socket/server.scm b/web/socket/server.scm
index 3394d3b..353a2eb 100644
--- a/web/socket/server.scm
+++ b/web/socket/server.scm
@@ -95,10 +95,12 @@ called for each complete message that is received."
(write-response response client-socket)
(force-output client-socket)
(let loop ()
- (let ((frame (read-data-frame client-socket #:echo-close? #t)))
- (when frame
- (handle-data-frame (frame-type frame) (frame-data frame))
- (loop))))))
+ (match (read-data-frame client-socket #:echo-close? #t)
+ ((or #f (? close-frame?))
+ (values))
+ (frame
+ (handle-data-frame (frame-type frame) (frame-data frame))
+ (loop))))))
(define* (run-server handler #:optional (server-socket (make-server-socket)))
"Run WebSocket server on SERVER-SOCKET. HANDLER, a procedure that