Software /
code /
prosody
Comparison
plugins/mod_websocket.lua @ 11108:fa1821b56f75 0.11
mod_websocket: handle full frame buffer and raise stream error
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 17 Sep 2020 16:41:48 +0100 |
parent | 11107:ddd0007e0f1b |
child | 11109:7ec7dba7ba8b |
comparison
equal
deleted
inserted
replaced
11107:ddd0007e0f1b | 11108:fa1821b56f75 |
---|---|
273 session.close = session_close; | 273 session.close = session_close; |
274 | 274 |
275 -- max frame header is 22 bytes | 275 -- max frame header is 22 bytes |
276 local frameBuffer = dbuffer.new(stanza_size_limit + 22, frame_fragment_limit); | 276 local frameBuffer = dbuffer.new(stanza_size_limit + 22, frame_fragment_limit); |
277 add_filter(session, "bytes/in", function(data) | 277 add_filter(session, "bytes/in", function(data) |
278 frameBuffer:write(data); | 278 if not frameBuffer:write(data) then |
279 session.log("warn", "websocket frame buffer full - terminating session"); | |
280 session:close({ condition = "resource-constraint", text = "frame buffer exceeded" }); | |
281 return; | |
282 end | |
279 | 283 |
280 local cache = {}; | 284 local cache = {}; |
281 local frame, length = parse_frame(frameBuffer); | 285 local frame, length = parse_frame(frameBuffer); |
282 | 286 |
283 while frame do | 287 while frame do |