aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2020-09-28 16:36:12 +0100
committerMatthew Wild <mwild1@gmail.com>2020-09-28 16:36:12 +0100
commit15aaf9446b9c50e5c5f18307ef39d3ae9ab25f6b (patch)
tree1e5f939681c1ef6d401eae35691d8ba8bace92b1
parentmod_websocket: Enforce stanza size limit and close stream (diff)
downloadprosody-15aaf9446b9c50e5c5f18307ef39d3ae9ab25f6b.tar.xz
prosody-15aaf9446b9c50e5c5f18307ef39d3ae9ab25f6b.zip
mod_websocket: Continue to process data already in the buffer after an error occurs
Previously any error, or even a normal websocket close frame, would return early, leaving potentially entire frames in the buffer unprocessed and then discarded. This change stops processing new data, but returns an existing processed data up to the point of the error/close.
-rw-r--r--plugins/mod_websocket.lua2
1 files changed, 1 insertions, 1 deletions
diff --git a/plugins/mod_websocket.lua b/plugins/mod_websocket.lua
index 0bd001f48..ecc12a45e 100644
--- a/plugins/mod_websocket.lua
+++ b/plugins/mod_websocket.lua
@@ -291,7 +291,7 @@ function handle_request(event)
end
frameBuffer:discard(length);
local result = handle_frame(frame);
- if not result then return; end
+ if not result then break; end
cache[#cache+1] = filter_open_close(result);
frame, length = parse_frame(frameBuffer);
end