aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2010-11-02 18:58:11 +0500
committerWaqas Hussain <waqas20@gmail.com>2010-11-02 18:58:11 +0500
commit372813b78e29479f655712c651a1a57828423987 (patch)
tree2157a22cb34eb2afa3f922358cfb65cb3a0bd51b
parent310785e05e00e43bf71fdcfc585dc1c1232c2ced (diff)
downloadprosody-372813b78e29479f655712c651a1a57828423987.tar.gz
prosody-372813b78e29479f655712c651a1a57828423987.zip
util.sasl, util.sasl_cyrus: Mechanism selection cleaned up to be more consistent.
-rw-r--r--util/sasl.lua10
-rw-r--r--util/sasl_cyrus.lua8
2 files changed, 9 insertions, 9 deletions
diff --git a/util/sasl.lua b/util/sasl.lua
index 3eb2db65..93b79a86 100644
--- a/util/sasl.lua
+++ b/util/sasl.lua
@@ -71,18 +71,16 @@ end
-- select a mechanism to use
function method:select(mechanism)
- if self.mech_i then
- return false;
+ if not self.selected and self.mechs[mechanism] then
+ self.selected = mechanism;
+ return true;
end
-
- self.mech_i = mechanisms[self:mechanisms()[mechanism] and mechanism];
- return (self.mech_i ~= nil);
end
-- feed new messages to process into the library
function method:process(message)
--if message == "" or message == nil then return "failure", "malformed-request" end
- return self.mech_i(self, message);
+ return mechanisms[self.selected](self, message);
end
-- load the mechanisms
diff --git a/util/sasl_cyrus.lua b/util/sasl_cyrus.lua
index 1f901d57..002118fd 100644
--- a/util/sasl_cyrus.lua
+++ b/util/sasl_cyrus.lua
@@ -121,8 +121,10 @@ end
-- select a mechanism to use
function method:select(mechanism)
- self.mechanism = mechanism;
- return self:mechanisms()[mechanism];
+ if not self.selected and self.mechs[mechanism] then
+ self.selected = mechanism;
+ return true;
+ end
end
-- feed new messages to process into the library
@@ -131,7 +133,7 @@ function method:process(message)
local data;
if not self.first_step_done then
- err, data = cyrussasl.server_start(self.cyrus, self.mechanism, message or "")
+ err, data = cyrussasl.server_start(self.cyrus, self.selected, message or "")
self.first_step_done = true;
else
err, data = cyrussasl.server_step(self.cyrus, message or "")