Merge 0.8->trunk
[prosody.git] / plugins / mod_dialback.lua
index 5060f08fbd35dbf6ec1a0ac8a5ac8ba197ec5566..e27f8657b2a4b24b7fb90321cac49ae6ed5af7c3 100644 (file)
@@ -131,12 +131,22 @@ module:hook("stanza/jabber:server:dialback:result", function(event)
        end
 end);
 
+module:hook_stanza("urn:ietf:params:xml:ns:xmpp-sasl", "failure", function (origin, stanza)
+       if origin.external_auth == "failed" then
+               module:log("debug", "SASL EXTERNAL failed, falling back to dialback");
+               s2s_initiate_dialback(origin);
+               return true;
+       end
+end, 100);
+
 module:hook_stanza(xmlns_stream, "features", function (origin, stanza)
-       s2s_initiate_dialback(origin);
-       return true;
+       if not origin.external_auth or origin.external_auth == "failed" then
+               s2s_initiate_dialback(origin);
+               return true;
+       end
 end, 100);
 
 -- Offer dialback to incoming hosts
 module:hook("s2s-stream-features", function (data)
-       data.features:tag("dialback", { xmlns='urn:xmpp:features:dialback' }):tag("optional"):up():up();
+       data.features:tag("dialback", { xmlns='urn:xmpp:features:dialback' }):up();
 end);