From 438d87675d9ef18695475685ff36ff75a5506466 Mon Sep 17 00:00:00 2001 From: Matthew Wolff Date: Wed, 8 May 2024 19:38:02 -0500 Subject: Distinguish close frames from timeouts. --- web/socket/server.scm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'web/socket/server.scm') 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 -- cgit v1.2.3