guix: Use guile-3.0.
[8sync.git] / 8sync / systems / websocket / server.scm
index af0fe1fb5b88af205c7c53d825f6e65e91e42679..11704d477e61a5051afdb2c24c103d360a4c4086 100644 (file)
@@ -1,7 +1,7 @@
 ;;; guile-websocket --- WebSocket client/server
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of guile-websocket.
 ;;;
@@ -71,8 +71,7 @@ string."
   ((ws-send websocket-server-send))
   (upgrade-paths #:init-value `(("websocket" .
                                  ,(wrap-apply websocket-client-loop)))
-                 #:allocation #:each-subclass
-                 #:accessor .upgrade-paths)
+                 #:allocation #:each-subclass)
 
   (gen-client-id #:init-thunk make-simple-counter)
 
@@ -157,11 +156,12 @@ called for each complete message that is received."
           (loop fragments type))
          ((first-fragment-frame? frame) ; begin accumulating fragments
           (loop (list frame) (frame-type frame)))
-         ((fragment-frame? frame) ; add a fragment
-          (loop (cons frame fragments) type))
          ((final-fragment-frame? frame) ; concatenate all fragments
-          (handle-data-frame type (frame-concatenate (reverse fragments)))
+          (handle-data-frame type (frame-concatenate
+                                   (reverse (cons frame fragments))))
           (loop '() #f))
+         ((fragment-frame? frame) ; add a fragment
+          (loop (cons frame fragments) type))
          ((data-frame? frame) ; unfragmented data frame
           (handle-data-frame (frame-type frame) (frame-data frame))
           (loop '() #f)))))))