From: Holger Weiss Date: Tue, 24 Mar 2015 23:52:49 +0000 (+0100) Subject: Don't route error/groupchat messages to bare JIDs X-Git-Tag: 15.04~66^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8f9a2d6df8a79a9d8e348ab0f5219a006131f4c3;p=ejabberd Don't route error/groupchat messages to bare JIDs As per RFC 6121, drop error messages that were sent to bare JIDs, and return an error if a groupchat message was sent to a bare JID. --- diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index ebcf6fa58..478de69c0 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -516,7 +516,18 @@ do_route(From, To, #xmlel{} = Packet) -> PResources); true -> ok end; - <<"message">> -> route_message(From, To, Packet); + <<"message">> -> + case xml:get_attr_s(<<"type">>, Attrs) of + <<"chat">> -> route_message(From, To, Packet); + <<"headline">> -> route_message(From, To, Packet); + <<"error">> -> ok; + <<"groupchat">> -> + Err = jlib:make_error_reply(Packet, + ?ERR_SERVICE_UNAVAILABLE), + ejabberd_router:route(To, From, Err); + _ -> + route_message(From, To, Packet) + end; <<"iq">> -> process_iq(From, To, Packet); _ -> ok end;