diff options
author | Tobias Markmann <tm@ayena.de> | 2009-08-18 22:00:37 +0200 |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2009-08-18 22:00:37 +0200 |
commit | 20d9c7ea6df498f5ee32533c5c3fd347bfafda42 (patch) | |
tree | d3cb12cb13dac1be96fe52ac190993f3364219e7 /plugins | |
parent | f74df67a5d6393ee3a8d6714a03f718f36177577 (diff) | |
download | prosody-20d9c7ea6df498f5ee32533c5c3fd347bfafda42.tar.gz prosody-20d9c7ea6df498f5ee32533c5c3fd347bfafda42.zip |
Don't allow double compression.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mod_compression.lua | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index 14265025..7e53a5e5 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -37,6 +37,13 @@ module:add_event_hook("stream-features", -- TODO Support compression on S2S level too. module:add_handler({"c2s_unauthed", "c2s_authed"}, "compress", xmlns_compression_protocol, function(session, stanza) + -- fail if we are already compressed + if session.compressed then + local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); + session.send(error_st); + session:log("warn", "Tried to establish another compression layer."); + end + -- checking if the compression method is supported local method = stanza:child_with_name("method")[1]; if method == "zlib" then @@ -74,7 +81,7 @@ module:add_handler({"c2s_unauthed", "c2s_authed"}, "compress", xmlns_compression text = compressed; extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); }); - module:log("error", compressed); + module:log("warn", compressed); return; end old_send(compressed); @@ -91,7 +98,7 @@ module:add_handler({"c2s_unauthed", "c2s_authed"}, "compress", xmlns_compression text = decompressed; extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); }); - module:log("error", decompressed); + module:log("warn", decompressed); return; end old_data(conn, decompressed); |