проблема mucsub, когда пользователь забанен в muc room - PullRequest
0 голосов
/ 04 июня 2018

Если пользователь забанен в muc (через xep-0045) и имеет подписку (через mucsub), события pubsub по-прежнему доступны из этой комнаты muc.И если пользователь, у которого есть подписка на комнату muc, забанен в этой комнате muc, и через некоторое время пользователь отписывается от этой комнаты, в то время как владелец решает установить принадлежность к outcast ни к какому (удаляет бан) ответы сервера. Псевдоним x не существует в комнате.Это потому, что пользователь отписался о комнате.

Я изменил код в mod_muc_room.erl

, добавил эту часть кода в кейсе process_item_change / 3 case

{JID, affiliation, outcast, Reason} ->
LBareJID = jid:tolower(jid:remove_resource(JID)),
case ?DICT:find(LBareJID, SD#state.subscribers) of
    {ok, #subscriber{nick = Nick}} ->
        Nicks = ?DICT:erase(Nick, SD#state.subscriber_nicks),
        Subscribers = ?DICT:erase(LBareJID, SD#state.subscribers),
        NewSD = SD#state{subscribers = Subscribers,
                        subscriber_nicks = Nicks},
        store_room(NewSD, [{del_subscription, LBareJID}]),
        send_subscriptions_change_notifications(JID, Nick, unsubscribe, NewSD);
    _ ->
        NewSD = SD,
        ok
end,

, он удаляет подписку пользователя, но когда владельцы хотят снять бан, как я сказал, сервер отвечает "Ник не существует в комнате"

1 Ответ

0 голосов
/ 20 июня 2018

Эта проблема также отслеживается здесь: https://github.com/processone/ejabberd/issues/2451

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...