diff options
author | Waqas Hussain <waqas20@gmail.com> | 2011-10-13 00:24:09 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2011-10-13 00:24:09 +0500 |
commit | f0a3554f80b4df6010450f89c4cd1ad386495658 (patch) | |
tree | a176eb52071d0485a7b1757f201b9192de2bcff3 /plugins | |
parent | 1399d251616807ebeecd8fd4e76c63f64204ff7f (diff) | |
download | prosody-f0a3554f80b4df6010450f89c4cd1ad386495658.tar.gz prosody-f0a3554f80b4df6010450f89c4cd1ad386495658.zip |
mod_saslauth: Never send empty <mechanisms/>, for real this time.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/mod_saslauth.lua | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/plugins/mod_saslauth.lua b/plugins/mod_saslauth.lua index 8a4b84d9..9c62e5ec 100644 --- a/plugins/mod_saslauth.lua +++ b/plugins/mod_saslauth.lua @@ -248,15 +248,13 @@ module:hook("stream-features", function(event) return; end origin.sasl_handler = usermanager_get_sasl_handler(module.host); - local mechanisms = origin.sasl_handler:mechanisms(); - if not next(mechanisms) then return; end - features:tag("mechanisms", mechanisms_attr); - for mechanism in pairs(mechanisms) do + local mechanisms = st.stanza("mechanisms", mechanisms_attr); + for mechanism in pairs(origin.sasl_handler:mechanisms()) do if mechanism ~= "PLAIN" or origin.secure or allow_unencrypted_plain_auth then - features:tag("mechanism"):text(mechanism):up(); + mechanisms:tag("mechanism"):text(mechanism):up(); end end - features:up(); + if mechanisms[1] then features:add_child(mechanisms); end else features:tag("bind", bind_attr):tag("required"):up():up(); features:tag("session", xmpp_session_attr):tag("optional"):up():up(); |