Don't allow double compression.

Tue, 18 Aug 2009 22:00:37 +0200

author
Tobias Markmann <tm@ayena.de>
date
Tue, 18 Aug 2009 22:00:37 +0200
changeset 1719
cf103398e643
parent 1718
af3d0c329396
child 1725
fb3137652ea6

Don't allow double compression.

plugins/mod_compression.lua file | annotate | diff | comparison | revisions
--- a/plugins/mod_compression.lua	Tue Aug 18 21:46:25 2009 +0200
+++ b/plugins/mod_compression.lua	Tue Aug 18 22:00:37 2009 +0200
@@ -37,6 +37,13 @@
 -- 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 @@
 								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 @@
 									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);

mercurial