]> granicus.if.org Git - ejabberd/commitdiff
Send presence-unavailable when expulsing a participant
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Fri, 13 Oct 2017 06:17:22 +0000 (09:17 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Fri, 13 Oct 2017 06:17:22 +0000 (09:17 +0300)
src/mod_muc_room.erl

index e06c206835b8a7800bfb8a8d64d43cfcfec0aa34..27ecceecfda218c97a49996e5cc514d83805cde4 100644 (file)
@@ -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).