mod_message: Don't treat a message as delivered ok if session.send() returns false
authorMatthew Wild <mwild1@gmail.com>
Sun, 22 Jul 2012 16:59:55 +0100
changeset 4965 c1685f0441b7
parent 4964 c9b8ec3eb1e9
child 4966 073eff2853a1
mod_message: Don't treat a message as delivered ok if session.send() returns false
plugins/mod_message.lua
--- a/plugins/mod_message.lua	Sun Jul 22 16:59:12 2012 +0100
+++ b/plugins/mod_message.lua	Sun Jul 22 16:59:55 2012 +0100
@@ -35,10 +35,13 @@
 		if user then -- some resources are connected
 			local recipients = user.top_resources;
 			if recipients then
+				local sent;
 				for i=1,#recipients do
-					recipients[i].send(stanza);
+					sent = recipients[i].send(stanza) or sent;
 				end
-				return true;
+				if sent then
+					return true;
+				end
 			end
 		end
 		-- no resources are online
@@ -65,9 +68,7 @@
 	local origin, stanza = data.origin, data.stanza;
 	
 	local session = full_sessions[stanza.attr.to];
-	if session then
-		-- TODO fire post processing event
-		session.send(stanza);
+	if session and session.send(stanza) then
 		return true;
 	else -- resource not online
 		return process_to_bare(jid_bare(stanza.attr.to), origin, stanza);