Merge 0.10->trunk
[prosody.git] / plugins / mod_saslauth.lua
index 4513c511d68d164070438aa05120f93b005e7972..a07c5fd2a487d27742ca73c3f6ba711d23ffa806 100644 (file)
@@ -197,7 +197,7 @@ module:hook("stanza/urn:ietf:params:xml:ns:xmpp-sasl:auth", function(event)
                return s2s_external_auth(session, stanza)
        end
 
-       if session.type ~= "c2s_unauthed" then return; end
+       if session.type ~= "c2s_unauthed" or module:get_host_type() ~= "local" then return; end
 
        if session.sasl_handler and session.sasl_handler.selected then
                session.sasl_handler = nil; -- allow starting a new SASL negotiation before completing an old one
@@ -245,7 +245,7 @@ module:hook("stream-features", function(event)
                if origin.encrypted then
                        -- check wether LuaSec has the nifty binding to the function needed for tls-unique
                        -- FIXME: would be nice to have this check only once and not for every socket
-                       if origin.conn:socket().getpeerfinished then
+                       if origin.conn:socket().getpeerfinished and origin.sasl_handler.add_cb_handler then
                                origin.sasl_handler:add_cb_handler("tls-unique", function(self)
                                        return self.userdata:getpeerfinished();
                                end);
@@ -284,7 +284,7 @@ module:hook("iq/self/urn:ietf:params:xml:ns:xmpp-bind:bind", function(event)
        local resource;
        if stanza.attr.type == "set" then
                local bind = stanza.tags[1];
-               resource = bind:child_with_name("resource");
+               resource = bind:get_child("resource");
                resource = resource and #resource.tags == 0 and resource[1] or nil;
        end
        local success, err_type, err, err_msg = sm_bind_resource(origin, resource);