]> granicus.if.org Git - ejabberd/commitdiff
avoid sending empty events
authorChristophe Romain <christophe.romain@process-one.net>
Mon, 5 May 2014 11:51:02 +0000 (13:51 +0200)
committerChristophe Romain <christophe.romain@process-one.net>
Mon, 5 May 2014 15:53:44 +0000 (17:53 +0200)
src/mod_pubsub.erl
src/mod_pubsub_odbc.erl

index 8cbd994e020db1ba061a49cc656b092597ff6ac1..1d8bd143c1833b3810ed1467b4d9fd2bc15fa5f1 100644 (file)
@@ -3356,6 +3356,8 @@ send_items(Host, Node, NodeId, Type, {U, S, R} = LJID,
               _ -> []
             end,
     Stanza = case ToSend of
+              [] ->
+                  undefined;
               [LastItem] ->
                   {ModifNow, ModifUSR} =
                       LastItem#pubsub_item.modification,
@@ -3369,11 +3371,13 @@ send_items(Host, Node, NodeId, Type, {U, S, R} = LJID,
                                        attrs = nodeAttr(Node),
                                        children = itemsEls(ToSend)}])
             end,
-    case is_tuple(Host) of
-      false ->
+    case {is_tuple(Host), Stanza} of
+      {_, undefined} ->
+         ok;
+      {false, _} ->
          ejabberd_router:route(service_jid(Host),
                                jlib:make_jid(LJID), Stanza);
-      true ->
+      {true, _} ->
          case ejabberd_sm:get_session_pid(U, S, R) of
            C2SPid when is_pid(C2SPid) ->
                ejabberd_c2s:broadcast(C2SPid,
index 8236447d0b87ed29e686ad093d2938c9b8398c3c..498c81bd38213fda11a499a9461cacd2906b9d5a 100644 (file)
@@ -3013,7 +3013,7 @@ send_items(Host, Node, NodeId, Type, LJID, last) ->
                                           ModifNow, ModifUSR)
     end,
     ejabberd_router:route(service_jid(Host), jlib:make_jid(LJID), Stanza);
-send_items(Host, Node, NodeId, Type, LJID, Number) ->
+send_items(Host, Node, NodeId, Type, {U, S, R} = LJID, Number) ->
     ToSend = case node_action(Host, Type, get_items,
                              [NodeId, LJID])
                 of
@@ -3026,6 +3026,8 @@ send_items(Host, Node, NodeId, Type, LJID, Number) ->
               _ -> []
             end,
     Stanza = case ToSend of
+              [] ->
+                  undefined;
               [LastItem] ->
                   {ModifNow, ModifUSR} =
                       LastItem#pubsub_item.modification,
@@ -3039,7 +3041,22 @@ send_items(Host, Node, NodeId, Type, LJID, Number) ->
                                        attrs = nodeAttr(Node),
                                        children = itemsEls(ToSend)}])
             end,
-    ejabberd_router:route(service_jid(Host), jlib:make_jid(LJID), Stanza).
+    case {is_tuple(Host), Stanza} of
+      {_, undefined} ->
+         ok;
+      {false, _} ->
+         ejabberd_router:route(service_jid(Host),
+                               jlib:make_jid(LJID), Stanza);
+      {true, _} ->
+         case ejabberd_sm:get_session_pid(U, S, R) of
+           C2SPid when is_pid(C2SPid) ->
+               ejabberd_c2s:broadcast(C2SPid,
+                                      {pep_message,
+                                       <<((Node))/binary, "+notify">>},
+                                      _Sender = service_jid(Host), Stanza);
+           _ -> ok
+         end
+    end.
 
 %% @spec (Host, JID, Plugins) -> {error, Reason} | {result, Response}
 %%      Host = host()