From 152e0d77c1a15f9279a92923666ab92c6fc88163 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Fri, 13 Oct 2017 09:17:22 +0300 Subject: Send presence-unavailable when expulsing a participant --- src/mod_muc_room.erl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index e06c20683..27ecceecf 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -1260,8 +1260,16 @@ expulse_participant(Packet, From, StateData, Reason1) -> LJID = jid:tolower(From), {ok, #user{nick = Nick}} = (?DICT):find(LJID, StateData#state.users), case (?DICT):find(Nick, StateData#state.nicks) of - {ok, [_, _ | _]} -> ok; - _ -> send_new_presence(From, NewState, StateData) + {ok, [_, _ | _]} -> + Aff = get_affiliation(From, StateData), + Item = #muc_item{affiliation = Aff, role = none, jid = From}, + Pres = xmpp:set_subtag( + Packet, #muc_user{items = [Item], + status_codes = [110]}), + send_wrapped(jid:replace_resource(StateData#state.jid, Nick), + From, Pres, ?NS_MUCSUB_NODES_PRESENCE, StateData); + _ -> + send_new_presence(From, NewState, StateData) end, remove_online_user(From, NewState). -- cgit v1.2.3