util.sasl, util.sasl_cyrus: Mechanism selection cleaned up to be more consistent.
authorWaqas Hussain <waqas20@gmail.com>
Tue, 02 Nov 2010 18:58:11 +0500
changeset 3550 5e5d136d9de0
parent 3549 395d5bb5266e
child 3551 4fba723ab235
util.sasl, util.sasl_cyrus: Mechanism selection cleaned up to be more consistent.
util/sasl.lua
util/sasl_cyrus.lua
--- a/util/sasl.lua	Tue Nov 02 18:04:56 2010 +0500
+++ b/util/sasl.lua	Tue Nov 02 18:58:11 2010 +0500
@@ -71,18 +71,16 @@
 
 -- 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
--- a/util/sasl_cyrus.lua	Tue Nov 02 18:04:56 2010 +0500
+++ b/util/sasl_cyrus.lua	Tue Nov 02 18:58:11 2010 +0500
@@ -121,8 +121,10 @@
 
 -- 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 @@
 	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 "")