]> granicus.if.org Git - ejabberd/commitdiff
mod_block_strangers: Bounce groupchat to bare JID
authorHolger Weiss <holger@zedat.fu-berlin.de>
Wed, 24 Jan 2018 10:49:31 +0000 (11:49 +0100)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Wed, 24 Jan 2018 10:49:31 +0000 (11:49 +0100)
If a blocked message is of type 'groupchat', address the error message
to the bare JID (rather than sending it as MUC PM).

src/mod_block_strangers.erl

index d427ef9a6ec84dd04309f06c4441cfe476b7b780..e865754e2f834c1e1b0972e5e51a470e47edf113 100644 (file)
@@ -106,7 +106,8 @@ check_message(#message{from = From, to = To, lang = Lang} = Msg) ->
                        Drop ->
                            Txt = <<"Messages from strangers are rejected">>,
                            Err = xmpp:err_policy_violation(Txt, Lang),
-                           ejabberd_router:route_error(Msg, Err),
+                           Msg1 = maybe_adjust_from(Msg),
+                           ejabberd_router:route_error(Msg1, Err),
                            deny;
                        true ->
                            allow
@@ -118,6 +119,12 @@ check_message(#message{from = From, to = To, lang = Lang} = Msg) ->
            allow
     end.
 
+-spec maybe_adjust_from(message()) -> message().
+maybe_adjust_from(#message{type = groupchat, from = From} = Msg) ->
+    Msg#message{from = jid:remove_resource(From)};
+maybe_adjust_from(#message{} = Msg) ->
+    Msg.
+
 -spec check_subscription(jid(), jid()) -> none | some.
 check_subscription(From, To) ->
     {LocalUser, LocalServer, _} = jid:tolower(To),