diff options
author | Kim Alvefur <zash@zash.se> | 2020-05-31 22:25:48 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2020-05-31 22:25:48 +0200 |
commit | d22e85debcc0a230f82af5b07e28f4248f63e072 (patch) | |
tree | 4937f14d1382dddb1fe62e9ec3c8c8528ade3550 | |
parent | 836be9b60d1e2b10ec4cdfb3e58281f18c0a31d0 (diff) | |
download | prosody-d22e85debcc0a230f82af5b07e28f4248f63e072.tar.gz prosody-d22e85debcc0a230f82af5b07e28f4248f63e072.zip |
mod_c2s,mod_s2s: Use a distinct stream error for hitting stanza size limit
Since this is not a real parse error, it should not be reported as such.
-rw-r--r-- | plugins/mod_c2s.lua | 6 | ||||
-rw-r--r-- | plugins/mod_s2s/mod_s2s.lua | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/plugins/mod_c2s.lua b/plugins/mod_c2s.lua index 91e37c4a..c6a95e9e 100644 --- a/plugins/mod_c2s.lua +++ b/plugins/mod_c2s.lua @@ -308,7 +308,11 @@ function listener.onconnect(conn) local ok, err = stream:feed(data); if not ok then log("debug", "Received invalid XML (%s) %d bytes: %q", err, #data, data:sub(1, 300)); - session:close("not-well-formed"); + if err == "stanza-too-large" then + session:close({ condition = "policy-violation", text = "XML stanza is too big" }); + else + session:close("not-well-formed"); + end end end end diff --git a/plugins/mod_s2s/mod_s2s.lua b/plugins/mod_s2s/mod_s2s.lua index 9f7d4d6d..bd6627b8 100644 --- a/plugins/mod_s2s/mod_s2s.lua +++ b/plugins/mod_s2s/mod_s2s.lua @@ -614,7 +614,11 @@ local function initialize_session(session) local ok, err = stream:feed(data); if ok then return; end log("debug", "Received invalid XML (%s) %d bytes: %q", err, #data, data:sub(1, 300)); - session:close("not-well-formed", nil, "Received invalid XML from remote server"); + if err == "stanza-too-large" then + session:close({ condition = "policy-violation", text = "XML stanza is too big" }, nil, "Received invalid XML from remote server"); + else + session:close("not-well-formed", nil, "Received invalid XML from remote server"); + end end end |