Diff

util/sasl.lua @ 3549:395d5bb5266e

util.sasl, util.sasl_cyrus: Load mechanisms list early rather than lazily, as they are always loaded anyway.
author Waqas Hussain <waqas20@gmail.com>
date Tue, 02 Nov 2010 18:04:56 +0500
parent 3442:8cfacc41099e
child 3550:5e5d136d9de0
line wrap: on
line diff
--- a/util/sasl.lua	Tue Nov 02 15:07:25 2010 +0500
+++ b/util/sasl.lua	Tue Nov 02 18:04:56 2010 +0500
@@ -48,7 +48,15 @@
 
 -- create a new SASL object which can be used to authenticate clients
 function new(realm, profile)
-	return setmetatable({ profile = profile, realm = realm }, method);
+	local mechanisms = {};
+	for backend, f in pairs(profile) do
+		if backend_mechanism[backend] then
+			for _, mechanism in ipairs(backend_mechanism[backend]) do
+				mechanisms[mechanism] = true;
+			end
+		end
+	end
+	return setmetatable({ profile = profile, realm = realm, mechs = mechanisms }, method);
 end
 
 -- get a fresh clone with the same realm and profile
@@ -58,19 +66,7 @@
 
 -- get a list of possible SASL mechanims to use
 function method:mechanisms()
-	local mechanisms = self.mechs;
-	if not mechanisms then
-		mechanisms = {}
-		for backend, f in pairs(self.profile) do
-			if backend_mechanism[backend] then
-				for _, mechanism in ipairs(backend_mechanism[backend]) do
-					mechanisms[mechanism] = true;
-				end
-			end
-		end
-		self.mechs = mechanisms;
-	end
-	return mechanisms;
+	return self.mechs;
 end
 
 -- select a mechanism to use