mod_storage_sql: Fix use of SQLite3 in-memory database (no path expansion)
[prosody.git] / plugins / mod_compression.lua
index 3b000303f5ab4b35edfa125802cbced160aa2e57..d49e388058a12666f21330669efb566cc8dd3513 100644 (file)
@@ -27,14 +27,12 @@ end
 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
@@ -45,11 +43,11 @@ module:hook_stanza(xmlns_stream, "features",
                function (session, stanza)
                        if not session.compressed and session.type == "s2sout" then
                                -- does remote server support compression?
-                               local comp_st = stanza:child_with_name("compression");
+                               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.")
@@ -147,6 +145,12 @@ module:hook("stanza/http://jabber.org/protocol/compress:compressed", function(ev
        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;
 
@@ -160,8 +164,7 @@ module:hook("stanza/http://jabber.org/protocol/compress:compress", function(even
                end
 
                -- checking if the compression method is supported
-               local method = stanza:child_with_name("method");
-               method = method and (method[1] or "");
+               local method = stanza:get_child_text("method");
                if method == "zlib" then
                        session.log("debug", "zlib compression enabled.");