diff options
Diffstat (limited to 'src/ejabberd_local.erl')
-rw-r--r-- | src/ejabberd_local.erl | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index d7849396b..74d86945d 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -177,15 +177,19 @@ unregister_iq_handler(Host, XMLNS) -> refresh_iq_handlers() -> ejabberd_local ! refresh_iq_handlers. --spec bounce_resource_packet(jid(), jid(), stanza()) -> ok. -bounce_resource_packet(_From, _To, #presence{}) -> +-spec bounce_resource_packet(jid(), jid(), stanza()) -> stop. +bounce_resource_packet(_From, #jid{lresource = <<"">>}, #presence{}) -> + ok; +bounce_resource_packet(_From, #jid{lresource = <<"">>}, + #message{type = headline}) -> ok; bounce_resource_packet(From, To, Packet) -> Lang = xmpp:get_lang(Packet), Txt = <<"No available resource found">>, Err = xmpp:make_error(Packet, xmpp:err_item_not_found(Txt, Lang)), - ejabberd_router:route(To, From, Err). + ejabberd_router:route(To, From, Err), + stop. %%==================================================================== %% gen_server callbacks @@ -283,7 +287,7 @@ do_route(From, To, Packet) -> ejabberd_sm:route(From, To, Packet); is_record(Packet, iq), To#jid.lresource == <<"">> -> process_iq(From, To, Packet); - Type == result; Type == error; Type == headline -> + Type == result; Type == error -> ok; true -> ejabberd_hooks:run(local_send_to_resource_hook, |