diff options
author | Waqas Hussain <waqas20@gmail.com> | 2010-11-02 18:58:11 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2010-11-02 18:58:11 +0500 |
commit | 372813b78e29479f655712c651a1a57828423987 (patch) | |
tree | 2157a22cb34eb2afa3f922358cfb65cb3a0bd51b | |
parent | 310785e05e00e43bf71fdcfc585dc1c1232c2ced (diff) | |
download | prosody-372813b78e29479f655712c651a1a57828423987.tar.gz prosody-372813b78e29479f655712c651a1a57828423987.zip |
util.sasl, util.sasl_cyrus: Mechanism selection cleaned up to be more consistent.
-rw-r--r-- | util/sasl.lua | 10 | ||||
-rw-r--r-- | util/sasl_cyrus.lua | 8 |
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 "") |