mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-24 16:23:40 +01:00
- pass jid into feature_check_packet hook;
- bounce messages when closing c2s session; - implemented treap:to_list/1 and treap:from_list/1
This commit is contained in:
parent
214c62bf9c
commit
584fa98564
@ -1276,7 +1276,7 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
|
||||
case ejabberd_hooks:run_fold(
|
||||
feature_check_packet, StateData#state.server,
|
||||
allow,
|
||||
[StateData#state.user,
|
||||
[StateData#state.jid,
|
||||
StateData#state.server,
|
||||
StateData#state.pres_last,
|
||||
{From, To, Packet},
|
||||
@ -1392,7 +1392,8 @@ terminate(_Reason, StateName, StateData) ->
|
||||
presence_broadcast(
|
||||
StateData, From, StateData#state.pres_i, Packet)
|
||||
end
|
||||
end;
|
||||
end,
|
||||
bounce_messages();
|
||||
_ ->
|
||||
ok
|
||||
end,
|
||||
@ -2185,6 +2186,15 @@ fsm_limit_opts(Opts) ->
|
||||
end
|
||||
end.
|
||||
|
||||
bounce_messages() ->
|
||||
receive
|
||||
{route, From, To, El} ->
|
||||
ejabberd_router:route(From, To, El),
|
||||
bounce_messages()
|
||||
after 0 ->
|
||||
ok
|
||||
end.
|
||||
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% JID Set memory footprint reduction code
|
||||
%%%----------------------------------------------------------------------
|
||||
|
@ -33,7 +33,9 @@
|
||||
get_root/1,
|
||||
lookup/2,
|
||||
is_empty/1,
|
||||
fold/3]).
|
||||
fold/3,
|
||||
from_list/1,
|
||||
to_list/1]).
|
||||
|
||||
empty() ->
|
||||
nil.
|
||||
@ -173,3 +175,20 @@ fold(F, Acc, {{_Hash, Key}, Priority, Value, Left, Right}) ->
|
||||
Acc1 = F({Key, Priority, Value}, Acc),
|
||||
Acc2 = fold(F, Acc1, Left),
|
||||
fold(F, Acc2, Right).
|
||||
|
||||
to_list(Tree) ->
|
||||
to_list(Tree, []).
|
||||
|
||||
to_list(nil, Acc) ->
|
||||
Acc;
|
||||
to_list(Tree, Acc) ->
|
||||
Root = get_root(Tree),
|
||||
to_list(delete_root(Tree), [Root|Acc]).
|
||||
|
||||
from_list(List) ->
|
||||
from_list(List, nil).
|
||||
|
||||
from_list([{Key, Priority, Value}|Tail], Tree) ->
|
||||
from_list(Tail, insert(Key, Priority, Value, Tree));
|
||||
from_list([], Tree) ->
|
||||
Tree.
|
||||
|
Loading…
Reference in New Issue
Block a user