Merge 0.9->0.10
[prosody.git] / plugins / mod_saslauth.lua
index c5d3dc917bd847b00869efc563ccc0640f75aca6..df60aefa36d09a6278555a9bb65ba9d596da1651 100644 (file)
@@ -1,7 +1,7 @@
 -- Prosody IM
 -- Copyright (C) 2008-2010 Matthew Wild
 -- Copyright (C) 2008-2010 Waqas Hussain
--- 
+--
 -- This project is MIT/X11 licensed. Please see the
 -- COPYING file in the source package for more information.
 --
@@ -242,6 +242,16 @@ module:hook("stream-features", function(event)
                        return;
                end
                origin.sasl_handler = usermanager_get_sasl_handler(module.host, origin);
+               if origin.encrypted then
+                       -- check wether LuaSec has the nifty binding to the function needed for tls-unique
+                       -- FIXME: would be nice to have this check only once and not for every socket
+                       if origin.conn:socket().getpeerfinished and origin.sasl_handler.add_cb_handler then
+                               origin.sasl_handler:add_cb_handler("tls-unique", function(self)
+                                       return self.userdata:getpeerfinished();
+                               end);
+                               origin.sasl_handler["userdata"] = origin.conn:socket();
+                       end
+               end
                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