mod_tls: Don't advertise TLS after authentication.
[prosody.git] / plugins / mod_message.lua
index eb6982f4224d0e9444f9d86dfda644ac1de35c4f..395307ba582221ff4c7b4df02dc108876a1f0070 100644 (file)
@@ -1,31 +1,22 @@
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+-- 
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
 
 local full_sessions = full_sessions;
 local bare_sessions = bare_sessions;
 
+local st = require "util.stanza";
 local jid_bare = require "util.jid".bare;
 local jid_split = require "util.jid".split;
 local user_exists = require "core.usermanager".user_exists;
 local offlinemanager = require "core.offlinemanager";
 local t_insert = table.insert;
 
-local function select_top_resources(user)
-       local priority = 0;
-       local recipients = {};
-       for _, session in pairs(user.sessions) do -- find resource with greatest priority
-               if session.presence then
-                       -- TODO check active privacy list for session
-                       local p = session.priority;
-                       if p > priority then
-                               priority = p;
-                               recipients = {session};
-                       elseif p == priority then
-                               t_insert(recipients, session);
-                       end
-               end
-       end
-       return recipients;
-end
-
 local function process_to_bare(bare, origin, stanza)
        local user = bare_sessions[bare];
        
@@ -44,8 +35,8 @@ local function process_to_bare(bare, origin, stanza)
                end  -- current policy is to discard headlines if no recipient is available
        else -- chat or normal message
                if user then -- some resources are connected
-                       local recipients = select_top_resources(user);
-                       if #recipients > 0 then
+                       local recipients = user.top_resources;
+                       if recipients then
                                for i=1,#recipients do
                                        recipients[i].send(stanza);
                                end
@@ -84,3 +75,5 @@ module:hook("message/bare", function(data)
 
        return process_to_bare(stanza.attr.to or (origin.username..'@'..origin.host), origin, stanza);
 end);
+
+module:add_feature("msgoffline");