module:hook("stream-features", function(event)
local origin, features = event.origin, event.features;
if not origin.compressed and origin.type == "c2s" then
- -- FIXME only advertise compression support when TLS layer has no compression enabled
features:add_child(compression_stream_feature);
end
end);
module:hook("s2s-stream-features", function(event)
local origin, features = event.origin, event.features;
- -- FIXME only advertise compression support when TLS layer has no compression enabled
if not origin.compressed and origin.type == "s2sin" then
features:add_child(compression_stream_feature);
end
local comp_st = stanza:get_child("compression", xmlns_compression_feature);
if comp_st then
-- do we support the mechanism
- for a in comp_st:children() do
- local algorithm = a[1]
+ for a in comp_st:childtags("method") do
+ local algorithm = a:get_text();
if algorithm == "zlib" then
session.sends2s(st.stanza("compress", {xmlns=xmlns_compression_protocol}):tag("method"):text("zlib"))
session.log("debug", "Enabled compression using zlib.")
end
end);
+module:hook("stanza/http://jabber.org/protocol/compress:failure", function(event)
+ local err = event.stanza:get_child();
+ (event.origin.log or module._log)("warn", "Compression setup failed (%s)", err and err.name or "unknown reason");
+ return true;
+end);
+
module:hook("stanza/http://jabber.org/protocol/compress:compress", function(event)
local session, stanza = event.origin, event.stanza;