summaryrefslogtreecommitdiff
path: root/src/mod_muc_room.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-10-13 09:17:22 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-10-13 09:17:22 +0300
commit152e0d77c1a15f9279a92923666ab92c6fc88163 (patch)
tree11465434e6de3e4d32c4309fd0895863e88e363c /src/mod_muc_room.erl
parentFix ZH translation (diff)
Send presence-unavailable when expulsing a participant
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r--src/mod_muc_room.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index e06c2068..27ecceec 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).