projects
/
8sync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
websocket: Oops, avoid looping.
[8sync.git]
/
8sync
/
systems
/
websocket
/
server.scm
diff --git
a/8sync/systems/websocket/server.scm
b/8sync/systems/websocket/server.scm
index 0865d675d41b6421ab92fe56b31b09ec4411cf83..c29ce51e44c40c545219f258daad01dee5207631 100644
(file)
--- a/
8sync/systems/websocket/server.scm
+++ b/
8sync/systems/websocket/server.scm
@@
-1,6
+1,7
@@
;;; guile-websocket --- WebSocket client/server
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
;;; 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>
;;;
;;; This file is part of guile-websocket.
;;;
;;;
;;; This file is part of guile-websocket.
;;;
@@
-134,7
+135,9
@@
called for each complete message that is received."
(let ((frame (read-frame-maybe)))
(cond
;; EOF - port is closed.
(let ((frame (read-frame-maybe)))
(cond
;; EOF - port is closed.
- ((not frame)
+ ;; @@: Sometimes the eof object appears here as opposed to
+ ;; at lookahead, but I'm not sure why
+ ((or (not frame) (eof-object? frame))
(close-down))
;; Per section 5.4, control frames may appear interspersed
;; along with a fragmented message.
(close-down))
;; Per section 5.4, control frames may appear interspersed
;; along with a fragmented message.
@@
-155,7
+158,8
@@
called for each complete message that is received."
((first-fragment-frame? frame) ; begin accumulating fragments
(loop (list frame) (frame-type frame)))
((final-fragment-frame? frame) ; concatenate all fragments
((first-fragment-frame? frame) ; begin accumulating fragments
(loop (list frame) (frame-type frame)))
((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))
(loop '() #f))
((fragment-frame? frame) ; add a fragment
(loop (cons frame fragments) type))