]> granicus.if.org Git - ejabberd/commitdiff
Update routing for unavailable resources
authorHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 24 Mar 2015 23:13:05 +0000 (00:13 +0100)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 24 Mar 2015 23:13:05 +0000 (00:13 +0100)
As per RFC 6121, don't reroute non-chat messages sent to unavailable
resources.

src/ejabberd_sm.erl

index abe15d9ffee6938576bd4084817a4b5add863111..ebcf6fa58573b303258934cf109de12953c626fc 100644 (file)
@@ -525,7 +525,15 @@ do_route(From, To, #xmlel{} = Packet) ->
          case Mod:get_sessions(LUser, LServer, LResource) of
            [] ->
                case Name of
-                 <<"message">> -> route_message(From, To, Packet);
+                 <<"message">> ->
+                     case xml:get_attr_s(<<"type">>, Attrs) of
+                       <<"chat">> -> route_message(From, To, Packet);
+                       <<"error">> -> ok;
+                       _ ->
+                           Err = jlib:make_error_reply(Packet,
+                                                       ?ERR_SERVICE_UNAVAILABLE),
+                           ejabberd_router:route(To, From, Err)
+                     end;
                  <<"iq">> ->
                      case xml:get_attr_s(<<"type">>, Attrs) of
                        <<"error">> -> ok;