mirror of
https://github.com/processone/ejabberd
synced 2025-10-03 09:49:18 +02:00
Better process session close
This commit is contained in:
parent
9de075029b
commit
0a7eb33772
1 changed files with 6 additions and 4 deletions
|
@ -162,11 +162,12 @@ close_session(SID, User, Server, Resource) ->
|
||||||
LServer = jid:nameprep(Server),
|
LServer = jid:nameprep(Server),
|
||||||
LResource = jid:resourceprep(Resource),
|
LResource = jid:resourceprep(Resource),
|
||||||
Mod = get_sm_backend(LServer),
|
Mod = get_sm_backend(LServer),
|
||||||
Info = case get_sessions(Mod, LUser, LServer, LResource) of
|
Sessions = get_sessions(Mod, LUser, LServer, LResource),
|
||||||
[#session{info = I} = Session|_] ->
|
Info = case lists:keyfind(SID, #session.sid, Sessions) of
|
||||||
|
#session{info = I} = Session ->
|
||||||
delete_session(Mod, Session),
|
delete_session(Mod, Session),
|
||||||
I;
|
I;
|
||||||
[] ->
|
_ ->
|
||||||
[]
|
[]
|
||||||
end,
|
end,
|
||||||
JID = jid:make(User, Server, Resource),
|
JID = jid:make(User, Server, Resource),
|
||||||
|
@ -472,7 +473,8 @@ host_down(Host) ->
|
||||||
Mod = get_sm_backend(Host),
|
Mod = get_sm_backend(Host),
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun(#session{sid = {_, Pid}}) when node(Pid) == node() ->
|
fun(#session{sid = {_, Pid}}) when node(Pid) == node() ->
|
||||||
ejabberd_c2s:send(Pid, xmpp:serr_system_shutdown());
|
ejabberd_c2s:send(Pid, xmpp:serr_system_shutdown()),
|
||||||
|
ejabberd_c2s:stop(Pid);
|
||||||
(_) ->
|
(_) ->
|
||||||
ok
|
ok
|
||||||
end, get_sessions(Mod, Host)),
|
end, get_sessions(Mod, Host)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue