]> granicus.if.org Git - ejabberd/commitdiff
Fix Addresses element which lacked others local destinations
authorBadlop <badlop@process-one.net>
Mon, 14 Mar 2016 11:53:14 +0000 (12:53 +0100)
committerBadlop <badlop@process-one.net>
Mon, 14 Mar 2016 11:53:14 +0000 (12:53 +0100)
When sending single packet, in addresses include all other group
destinations, not only oneself

src/mod_multicast.erl

index 0c6130482b226b9a9a96aa97fae8cdd37916139a..83520c0bebd7beefa5eb8901ccc4b1d13e502e46 100644 (file)
@@ -395,7 +395,7 @@ act_groups(FromJID, Packet_stripped, AAttrs, LServiceS,
 perform(From, Packet, AAttrs, _,
        {route_single, Group}) ->
     [route_packet(From, ToUser, Packet, AAttrs,
-                 Group#group.addresses)
+                 Group#group.others, Group#group.addresses)
      || ToUser <- Group#group.dests];
 perform(From, Packet, AAttrs, _,
        {{route_multicast, JID, RLimits}, Group}) ->
@@ -634,13 +634,13 @@ decide_action_group(Group) ->
 %%% Route packet
 %%%-------------------------
 
-route_packet(From, ToDest, Packet, AAttrs, Addresses) ->
+route_packet(From, ToDest, Packet, AAttrs, Others, Addresses) ->
     Dests = case ToDest#dest.type of
              <<"bcc">> -> [];
              _ -> [ToDest]
            end,
     route_packet2(From, ToDest#dest.jid_string, Dests,
-                 Packet, AAttrs, Addresses).
+                 Packet, AAttrs, {Others, Addresses}).
 
 route_packet_multicast(From, ToS, Packet, AAttrs, Dests,
                       Addresses, Limits) ->
@@ -666,6 +666,8 @@ route_packet2(From, ToS, Dests, Packet, AAttrs,
     ToJID = stj(ToS),
     ejabberd_router:route(From, ToJID, Packet2).
 
+append_dests(_Dests, {Others, Addresses}) ->
+    Addresses++Others;
 append_dests([], Addresses) -> Addresses;
 append_dests([Dest | Dests], Addresses) ->
     append_dests(Dests, [Dest#dest.full_xml | Addresses]).
@@ -912,8 +914,9 @@ received_awaiter(JID, Waiter, LServiceS) ->
                From = Waiter#waiter.sender,
                Packet = Waiter#waiter.packet,
                AAttrs = Waiter#waiter.aattrs,
+               Others = Group#group.others,
                Addresses = Waiter#waiter.addresses,
-               [route_packet(From, ToUser, Packet, AAttrs, Addresses)
+               [route_packet(From, ToUser, Packet, AAttrs, Others, Addresses)
                 || ToUser <- Group#group.dests];
            true ->
                send_query_info(RServer, LServiceS),