mirror of
https://github.com/processone/ejabberd
synced 2025-10-03 09:49:18 +02:00
ejabberd_sm: Fix routing of headline messages
As per RFC 6121, silently drop headline messages sent to the bare JID of an offline user or to the full JID of an unavailable resource.
This commit is contained in:
parent
8bfb6fdd4e
commit
179e8934cf
2 changed files with 9 additions and 4 deletions
|
@ -177,7 +177,8 @@ check_in_subscription(Acc, User, Server, _JID, _Type, _Reason) ->
|
|||
|
||||
-spec bounce_offline_message({bounce, message()} | any()) -> any().
|
||||
|
||||
bounce_offline_message({bounce, Packet} = Acc) ->
|
||||
bounce_offline_message({bounce, #message{type = T} = Packet} = Acc)
|
||||
when T == chat; T == groupchat; T == normal ->
|
||||
Lang = xmpp:get_lang(Packet),
|
||||
Txt = <<"User session not found">>,
|
||||
Err = xmpp:err_service_unavailable(Txt, Lang),
|
||||
|
@ -572,9 +573,11 @@ do_route(Packet) ->
|
|||
case online(Mod:get_sessions(LUser, LServer, LResource)) of
|
||||
[] ->
|
||||
case Packet of
|
||||
#message{type = T} when T == chat; T == normal;
|
||||
T == headline ->
|
||||
#message{type = T} when T == chat; T == normal ->
|
||||
route_message(Packet);
|
||||
#message{type = T} when T == headline ->
|
||||
?DEBUG("dropping headline to unavailable resource:~n~s",
|
||||
[xmpp:pp(Packet)]);
|
||||
#presence{} ->
|
||||
?DEBUG("dropping presence to unavailable resource:~n~s",
|
||||
[xmpp:pp(Packet)]);
|
||||
|
|
|
@ -197,7 +197,9 @@ send_all_master(Config) ->
|
|||
Acc + 1
|
||||
end, 0, Deliver),
|
||||
lists:foreach(
|
||||
fun(Msg) ->
|
||||
fun(#message{type = headline} = Msg) ->
|
||||
send(Config, Msg#message{to = BarePeer});
|
||||
(Msg) ->
|
||||
#message{type = error} = Err =
|
||||
send_recv(Config, Msg#message{to = BarePeer}),
|
||||
#stanza_error{reason = 'service-unavailable'} = xmpp:get_error(Err)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue