From cf224cd1a1f08dcf6ba48253fd60a2d148c613b3 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 9 Mar 2010 17:43:18 +0500 Subject: mod_compression: Fixed various possible tracebacks in logging. --- plugins/mod_compression.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'plugins/mod_compression.lua') diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index ec9e24ec..9ad0cbd4 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -8,6 +8,7 @@ local st = require "util.stanza"; local zlib = require "zlib"; local pcall = pcall; +local tostring = tostring; local xmlns_compression_feature = "http://jabber.org/features/compress" local xmlns_compression_protocol = "http://jabber.org/protocol/compress" @@ -57,7 +58,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); session.send(error_st); session.log("error", "Failed to create zlib.deflate filter."); - module:log("error", deflate_stream); + module:log("error", "%s", tostring(deflate_stream)); return end @@ -65,8 +66,8 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc if status == false then local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); session.send(error_st); - session.log("error", "Failed to create zlib.deflate filter."); - module:log("error", inflate_stream); + session.log("error", "Failed to create zlib.inflate filter."); + module:log("error", "%s", tostring(inflate_stream)); return end @@ -81,7 +82,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc text = compressed; extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); }); - module:log("warn", compressed); + module:log("warn", "%s", tostring(compressed)); return; end old_send(compressed); @@ -98,7 +99,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc text = decompressed; extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed"); }); - module:log("warn", decompressed); + module:log("warn", "%s", tostring(decompressed)); return; end old_data(conn, decompressed); @@ -114,7 +115,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc end; session.compressed = true; else - session.log("info", method.." compression selected. But we don't support it."); + session.log("info", "%s compression selected, but we don't support it.", tostring(method)); local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); session.send(error_st); end -- cgit v1.2.3 From 84ece3aca6b0d76a307acb47a4d0fc89c5eb3437 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 9 Mar 2010 17:52:18 +0500 Subject: mod_compression: Don't tell client compression succeeded when it didn't. --- plugins/mod_compression.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'plugins/mod_compression.lua') diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index 9ad0cbd4..e35430fd 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -48,10 +48,6 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc -- checking if the compression method is supported local method = stanza:child_with_name("method")[1]; if method == "zlib" then - session.log("info", method.." compression selected."); - session.send(st.stanza("compressed", {xmlns=xmlns_compression_protocol})); - session:reset_stream(); - -- create deflate and inflate streams local status, deflate_stream = pcall(zlib.deflate, compression_level); if status == false then @@ -71,6 +67,10 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc return end + session.log("info", method.." compression selected."); + session.send(st.stanza("compressed", {xmlns=xmlns_compression_protocol})); + session:reset_stream(); + -- setup compression for session.w local old_send = session.send; -- cgit v1.2.3 From b01e95ae145a66dd28529e4891bc244bb70ca584 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 9 Mar 2010 18:11:45 +0500 Subject: mod_compression: Don't succeed after indicating a failure. --- plugins/mod_compression.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'plugins/mod_compression.lua') diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index e35430fd..bdecf467 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -43,6 +43,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc 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."); + return; end -- checking if the compression method is supported -- cgit v1.2.3 From a4d78f333f96d6a1fe08bdd66e1b7cdf1f0e124a Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 9 Mar 2010 18:19:50 +0500 Subject: mod_compression: More robust stanza processing. --- plugins/mod_compression.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'plugins/mod_compression.lua') diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index bdecf467..379927df 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -47,7 +47,8 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc end -- checking if the compression method is supported - local method = stanza:child_with_name("method")[1]; + local method = stanza:child_with_name("method"); + method = method and method[1]; if method == "zlib" then -- create deflate and inflate streams local status, deflate_stream = pcall(zlib.deflate, compression_level); -- cgit v1.2.3 From b3aafb2c908ee767656555086c9c08c471f5063a Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 9 Mar 2010 20:14:47 +0500 Subject: mod_compression: Return instead of where applicable. --- plugins/mod_compression.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'plugins/mod_compression.lua') diff --git a/plugins/mod_compression.lua b/plugins/mod_compression.lua index 379927df..87ff6be7 100644 --- a/plugins/mod_compression.lua +++ b/plugins/mod_compression.lua @@ -40,7 +40,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc 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"); + local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"); session.send(error_st); session.log("warn", "Tried to establish another compression layer."); return; @@ -48,7 +48,7 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc -- checking if the compression method is supported local method = stanza:child_with_name("method"); - method = method and method[1]; + method = method and (method[1] or ""); if method == "zlib" then -- create deflate and inflate streams local status, deflate_stream = pcall(zlib.deflate, compression_level); @@ -116,10 +116,12 @@ module:add_handler({"c2s_unauthed", "c2s"}, "compress", xmlns_compression_protoc return true; end; session.compressed = true; - else + elseif method then session.log("info", "%s compression selected, but we don't support it.", tostring(method)); local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method"); session.send(error_st); + else + session.send(st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed")); end end ); -- cgit v1.2.3