plugins/mod_compression.lua
changeset 3226 69e920d7c968
parent 3223 ee2dabe699c9
child 3301 772fb30b28fb
equal deleted inserted replaced
3224:9dd54a708523 3226:69e920d7c968
    96 -- setup compression for a stream
    96 -- setup compression for a stream
    97 local function setup_compression(session, deflate_stream)
    97 local function setup_compression(session, deflate_stream)
    98 	add_filter(session, "bytes/out", function(t)
    98 	add_filter(session, "bytes/out", function(t)
    99 		local status, compressed, eof = pcall(deflate_stream, tostring(t), 'sync');
    99 		local status, compressed, eof = pcall(deflate_stream, tostring(t), 'sync');
   100 		if status == false then
   100 		if status == false then
       
   101 			module:log("warn", "%s", tostring(compressed));
   101 			session:close({
   102 			session:close({
   102 				condition = "undefined-condition";
   103 				condition = "undefined-condition";
   103 				text = compressed;
   104 				text = compressed;
   104 				extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed");
   105 				extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed");
   105 			});
   106 			});
   106 			module:log("warn", "%s", tostring(compressed));
       
   107 			return;
   107 			return;
   108 		end
   108 		end
   109 		return compressed;
   109 		return compressed;
   110 	end);	
   110 	end);	
   111 end
   111 end
   113 -- setup decompression for a stream
   113 -- setup decompression for a stream
   114 local function setup_decompression(session, inflate_stream)
   114 local function setup_decompression(session, inflate_stream)
   115 	add_filter(session, "bytes/in", function(data)
   115 	add_filter(session, "bytes/in", function(data)
   116 		local status, decompressed, eof = pcall(inflate_stream, data);
   116 		local status, decompressed, eof = pcall(inflate_stream, data);
   117 		if status == false then
   117 		if status == false then
       
   118 			module:log("warn", "%s", tostring(decompressed));
   118 			session:close({
   119 			session:close({
   119 				condition = "undefined-condition";
   120 				condition = "undefined-condition";
   120 				text = decompressed;
   121 				text = decompressed;
   121 				extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed");
   122 				extra = st.stanza("failure", {xmlns="http://jabber.org/protocol/compress"}):tag("processing-failed");
   122 			});
   123 			});
   123 			module:log("warn", "%s", tostring(decompressed));
       
   124 			return;
   124 			return;
   125 		end
   125 		end
   126 		return decompressed;
   126 		return decompressed;
   127 	end);
   127 	end);
   128 end
   128 end