plugins/mod_compression.lua
changeset 2892 9f214431de29
parent 2887 765e7070d0a8
parent 2890 6273d4672cb4
child 3127 94639081f327
child 3200 fd2389a240a2
equal deleted inserted replaced
2887:765e7070d0a8 2892:9f214431de29
   168 		function(session, stanza)
   168 		function(session, stanza)
   169 			-- fail if we are already compressed
   169 			-- fail if we are already compressed
   170 			if session.compressed then
   170 			if session.compressed then
   171 				local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed");
   171 				local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed");
   172 				(session.sends2s or session.send)(error_st);
   172 				(session.sends2s or session.send)(error_st);
   173 				session.log("warn", "Tried to establish another compression layer.");
   173 				session.log("debug", "Client tried to establish another compression layer.");
   174 				return;
   174 				return;
   175 			end
   175 			end
   176 			
   176 			
   177 			-- checking if the compression method is supported
   177 			-- checking if the compression method is supported
   178 			local method = stanza:child_with_name("method");
   178 			local method = stanza:child_with_name("method");
   179 			method = method and (method[1] or "");
   179 			method = method and (method[1] or "");
   180 			if method == "zlib" then
   180 			if method == "zlib" then
   181 				session.log("debug", "%s compression selected.", tostring(method));
   181 				session.log("debug", "zlib compression enabled.");
   182 				
   182 				
   183 				-- create deflate and inflate streams
   183 				-- create deflate and inflate streams
   184 				local deflate_stream = get_deflate_stream(session);
   184 				local deflate_stream = get_deflate_stream(session);
   185 				if not deflate_stream then return end
   185 				if not deflate_stream then return end
   186 				
   186 				
   202 						setup_decompression(session, inflate_stream);
   202 						setup_decompression(session, inflate_stream);
   203 						return true;
   203 						return true;
   204 					end;
   204 					end;
   205 				session.compressed = true;
   205 				session.compressed = true;
   206 			elseif method then
   206 			elseif method then
   207 				session.log("info", "%s compression selected, but we don't support it.", tostring(method));
   207 				session.log("debug", "%s compression selected, but we don't support it.", tostring(method));
   208 				local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method");
   208 				local error_st = st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("unsupported-method");
   209 				(session.sends2s or session.send)(error_st);
   209 				(session.sends2s or session.send)(error_st);
   210 			else
   210 			else
   211 				(session.sends2s or session.send)(st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"));
   211 				(session.sends2s or session.send)(st.stanza("failure", {xmlns=xmlns_compression_protocol}):tag("setup-failed"));
   212 			end
   212 			end