mod_compression: Return <setup-failed/> instead of <unsupported-method/> where applicable.

Tue, 09 Mar 2010 20:14:47 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Tue, 09 Mar 2010 20:14:47 +0500
changeset 2886
3baee526d714
parent 2885
ae72c0dd6f1f
child 2887
765e7070d0a8
child 2889
c1e6df7cf56a
child 2890
6273d4672cb4

mod_compression: Return <setup-failed/> instead of <unsupported-method/> where applicable.

plugins/mod_compression.lua file | annotate | diff | comparison | revisions
--- a/plugins/mod_compression.lua	Tue Mar 09 18:19:50 2010 +0500
+++ b/plugins/mod_compression.lua	Tue Mar 09 20:14:47 2010 +0500
@@ -40,7 +40,7 @@
 		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 @@
 			
 			-- 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 @@
 						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
 );

mercurial