]> granicus.if.org Git - ejabberd/commitdiff
ejabberd_sm: Fix routing of groupchat messages
authorHolger Weiss <holger@zedat.fu-berlin.de>
Wed, 5 Apr 2017 18:41:10 +0000 (20:41 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Wed, 5 Apr 2017 18:41:10 +0000 (20:41 +0200)
As per RFC 6121, don't (re)route groupchat messages sent to a bare JID
or to an unavailable resource.

src/ejabberd_sm.erl
test/offline_tests.erl

index 3515f6365ee30e933b98986954925e1022dc1c57..659961d102fb90b5dad0ba135b8868649eb54944 100644 (file)
@@ -553,7 +553,7 @@ do_route(#presence{to = #jid{lresource = <<"">>} = To} = Packet) ->
       end, get_user_present_resources(LUser, LServer));
 do_route(#message{to = #jid{lresource = <<"">>}, type = T} = Packet) ->
     ?DEBUG("processing message to bare JID:~n~s", [xmpp:pp(Packet)]),
-    if T == chat; T == headline; T == normal; T == groupchat ->
+    if T == chat; T == headline; T == normal ->
            route_message(Packet);
        true ->
            Lang = xmpp:get_lang(Packet),
@@ -573,7 +573,7 @@ do_route(Packet) ->
        [] ->
            case Packet of
                #message{type = T} when T == chat; T == normal;
-                                       T == headline; T == groupchat ->
+                                       T == headline ->
                    route_message(Packet);
                #presence{} ->
                    ?DEBUG("dropping presence to unavailable resource:~n~s",
index a33840f0a26186ad2793308f25135e54e6e11b72..1d2803db01664c4bcda830c4b970946bd6e248aa 100644 (file)
@@ -410,6 +410,7 @@ message_iterator(Config) ->
              Els <- AllEls],
     lists:partition(
       fun(#message{type = error}) -> true;
+        (#message{type = groupchat}) -> false;
         (#message{sub_els = [#offline{}|_]}) -> false;
         (#message{sub_els = [_, #xevent{id = I}]}) when I /= undefined -> false;
         (#message{sub_els = [#xevent{id = I}]}) when I /= undefined -> false;