25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-12-22 17:28:25 +01:00

* src/ejabberd_sm.erl: Now delivering messages to all resources with

max equal priority when this priority is non-negative.

SVN Revision: 541
This commit is contained in:
Mickaël Rémond 2006-04-23 09:31:54 +00:00
parent dc198cf08e
commit c86275ce9d
2 changed files with 25 additions and 14 deletions

View File

@ -2,6 +2,8 @@
* src/msgs/fr.msg: Updated
* src/msgs/de.msg: Updated (thanks to Nikolaus Polak)
* src/ejabberd_sm.erl: Now delivering messages to all resources with
max equal priority when this priority is non-negative.
2006-04-22 Alexey Shchepin <alexey@sevcom.net>

View File

@ -432,9 +432,13 @@ do_route(From, To, Packet) ->
route_message(From, To, Packet) ->
LUser = To#jid.luser,
LServer = To#jid.lserver,
case catch lists:max(get_user_present_resources(LUser, LServer)) of
{Priority, R} when is_integer(Priority),
Priority >= 0 ->
PrioRes = get_user_present_resources(LUser, LServer),
case catch lists:max(PrioRes) of
{Priority, _R} when is_integer(Priority), Priority >= 0 ->
lists:foreach(
%% Route messages to all priority that equals the max, if
%% positive
fun({P, R}) when P == Priority ->
LResource = jlib:resourceprep(R),
USR = {LUser, LServer, LResource},
case mnesia:dirty_index_read(session, USR, #session.usr) of
@ -446,6 +450,11 @@ route_message(From, To, Packet) ->
?DEBUG("sending to process ~p~n", [Pid]),
Pid ! {route, From, To, Packet}
end;
%% Ignore other priority:
({_Prio, _Res}) ->
ok
end,
PrioRes);
_ ->
case xml:get_tag_attr_s("type", Packet) of
"error" ->