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:
parent
dc198cf08e
commit
c86275ce9d
@ -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>
|
||||
|
||||
|
@ -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" ->
|
||||
|
Loading…
Reference in New Issue
Block a user