From 5f992383c5d661069201d337b5fd3ca4aced6351 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Tue, 2 Nov 2010 22:23:07 +0500 Subject: mod_saslauth: Allow restarting SASL negotiation from scratch. --- plugins/mod_saslauth.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/mod_saslauth.lua b/plugins/mod_saslauth.lua index 236ab856..c6ead31a 100644 --- a/plugins/mod_saslauth.lua +++ b/plugins/mod_saslauth.lua @@ -95,7 +95,16 @@ module:hook("stanza/urn:ietf:params:xml:ns:xmpp-sasl:auth", function(event) local session, stanza = event.origin, event.stanza; if session.type ~= "c2s_unauthed" then return; end - -- FIXME ignoring duplicates because ejabberd does + if session.sasl_handler and session.sasl_handler.selected then + session.sasl_handler = nil; -- allow starting a new SASL negotiation before completing an old one + end + if not session.sasl_handler then + if anonymous_login then + session.sasl_handler = new_sasl(module.host, anonymous_authentication_profile); + else + session.sasl_handler = usermanager_get_sasl_handler(module.host); + end + end local mechanism = stanza.attr.mechanism; if anonymous_login then if mechanism ~= "ANONYMOUS" then -- cgit v1.2.3