util.pluginloader: Remove unnecessary return value suppressing the real load error
[prosody.git] / util / sasl.lua
index 54715613d061472b5db8c8a57560cc2ba37db921..a343d608727db0ab80c520b3068db906fafd0d6e 100644 (file)
@@ -41,7 +41,7 @@ local function new_plain(realm, password_handler)
                
                if authentication == nil or password == nil then return "failure", "malformed-request" end
                
-               local password_encoding, correct_password = self.password_handler(authentication, self.realm, "PLAIN")
+               local password_encoding, correct_password = self.password_handler(authentication, self.realm, self.realm, "PLAIN")
                
                if correct_password == nil then return "failure", "not-authorized"
                elseif correct_password == false then return "failure", "account-disabled" end
@@ -138,7 +138,6 @@ local function new_digest_md5(realm, password_handler)
 
        local object = { mechanism = "DIGEST-MD5", realm = realm, password_handler = password_handler};
        
-       --TODO: something better than math.random would be nice, maybe OpenSSL's random number generator
        object.nonce = generate_uuid();
        object.step = 0;
        object.nonce_count = {};
@@ -177,7 +176,7 @@ local function new_digest_md5(realm, password_handler)
                        if not response["qop"] then response["qop"] = "auth" end
                        
                        if response["realm"] == nil or response["realm"] == "" then
-                               response["realm"] = self.realm;
+                               response["realm"] = "";
                        elseif response["realm"] ~= self.realm then
                                return "failure", "not-authorized", "Incorrect realm value";
                        end
@@ -200,12 +199,13 @@ local function new_digest_md5(realm, password_handler)
                        
                        --TODO maybe realm support
                        self.username = response["username"];
-                       local password_encoding, Y = self.password_handler(response["username"], response["realm"], "DIGEST-MD5", decoder)
+                       local password_encoding, Y = self.password_handler(response["username"], domain, response["realm"], "DIGEST-MD5", decoder);
                        if Y == nil then return "failure", "not-authorized"
                        elseif Y == false then return "failure", "account-disabled" end
                        local A1 = "";
                        if response.authzid then
                                if response.authzid == self.username.."@"..self.realm then
+                                       -- COMPAT
                                        log("warn", "Client is violating XMPP RFC. See section 6.1 of RFC 3920.");
                                        A1 = Y..":"..response["nonce"]..":"..response["cnonce"]..":"..response.authzid;
                                else
@@ -249,7 +249,6 @@ local function new_anonymous(realm, password_handler)
                function object.feed(self, message)
                        return "success"
                end
-       --TODO: From XEP-0175 "It is RECOMMENDED for the node identifier to be a UUID as specified in RFC 4122 [5]." So util.uuid() should (or have an option to) behave as specified in RFC 4122.
        object["username"] = generate_uuid()
        return object
 end