Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ejabberd_c2s.erl11
-rw-r--r--src/mod_configure.erl7
2 files changed, 10 insertions, 8 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index fdaa8586d..83dfd2f07 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1217,14 +1217,15 @@ handle_info({send_text, Text}, StateName, StateData) ->
send_text(StateData, Text),
ejabberd_hooks:run(c2s_loop_debug, [Text]),
fsm_next_state(StateName, StateData);
-handle_info(replaced, _StateName, StateData) ->
+handle_info(replaced, StateName, StateData) ->
Lang = StateData#state.lang,
- send_element(StateData,
- ?SERRT_CONFLICT(Lang,
- <<"Replaced by new connection">>)),
+ Xmlelement = ?SERRT_CONFLICT(Lang, <<"Replaced by new connection">>),
+ handle_info({kick, replaced, Xmlelement}, StateName, StateData);
+handle_info({kick, Reason, Xmlelement}, _StateName, StateData) ->
+ send_element(StateData, Xmlelement),
send_trailer(StateData),
{stop, normal,
- StateData#state{authenticated = replaced}};
+ StateData#state{authenticated = Reason}};
handle_info({route, _From, _To, {broadcast, Data}},
StateName, StateData) ->
?DEBUG("broadcast~n~p~n", [Data]),
diff --git a/src/mod_configure.erl b/src/mod_configure.erl
index c8a8ebddd..d9c825b5c 100644
--- a/src/mod_configure.erl
+++ b/src/mod_configure.erl
@@ -1846,13 +1846,14 @@ set_form(From, Host, ?NS_ADMINL(<<"delete-user">>),
|| {User, Server} <- ASL2],
{result, []};
set_form(From, Host, ?NS_ADMINL(<<"end-user-session">>),
- _Lang, XData) ->
+ Lang, XData) ->
AccountString = get_value(<<"accountjid">>, XData),
JID = jlib:string_to_jid(AccountString),
LUser = JID#jid.luser,
LServer = JID#jid.lserver,
true = LServer == Host orelse
get_permission_level(From) == global,
+ Xmlelement = ?SERRT_POLICY_VIOLATION(Lang, <<"has been kicked">>),
case JID#jid.lresource of
<<>> ->
SIDs = mnesia:dirty_select(session,
@@ -1860,14 +1861,14 @@ set_form(From, Host, ?NS_ADMINL(<<"end-user-session">>),
usr = {LUser, LServer, '_'},
_ = '_'},
[], ['$1']}]),
- [Pid ! replaced || {_, Pid} <- SIDs];
+ [Pid ! {kick, kicked_by_admin, Xmlelement} || {_, Pid} <- SIDs];
R ->
[{_, Pid}] = mnesia:dirty_select(session,
[{#session{sid = '$1',
usr = {LUser, LServer, R},
_ = '_'},
[], ['$1']}]),
- Pid ! replaced
+ Pid ! {kick, kicked_by_admin, Xmlelement}
end,
{result, []};
set_form(From, Host,