diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-01-20 19:35:46 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-01-20 19:35:46 +0300 |
commit | d5d906184f41232e8ab0b4de1308bfa49a783a61 (patch) | |
tree | b589bba220001a7cf356a7e8fbf4ccb59480508c /src/mod_muc_room.erl | |
parent | Prepare 17.01 for hex.pm (diff) | |
parent | Fix reporting dialback failures (diff) |
Merge branch 'new_stream'
Conflicts:
src/cyrsasl.erl
src/ejabberd_c2s.erl
src/ejabberd_cluster.erl
src/ejabberd_frontend_socket.erl
src/ejabberd_node_groups.erl
src/ejabberd_router.erl
src/mod_bosh.erl
src/mod_ip_blacklist.erl
src/mod_muc_mnesia.erl
src/mod_offline.erl
src/mod_proxy65_sm.erl
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r-- | src/mod_muc_room.erl | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index f524fb7c..40e9633b 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -1791,7 +1791,7 @@ add_new_user(From, Nick, Packet, StateData) -> Affiliation = get_affiliation(From, StateData), ServiceAffiliation = get_service_affiliation(From, StateData), - NConferences = tab_count_user(From), + NConferences = tab_count_user(From, StateData), MaxConferences = gen_mod:get_module_opt(StateData#state.server_host, mod_muc, max_user_conferences, @@ -4000,38 +4000,25 @@ add_to_log(Type, Data, StateData) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Users number checking --spec tab_add_online_user(jid(), state()) -> ok. +-spec tab_add_online_user(jid(), state()) -> any(). tab_add_online_user(JID, StateData) -> - {LUser, LServer, LResource} = jid:tolower(JID), - US = {LUser, LServer}, Room = StateData#state.room, Host = StateData#state.host, - catch ets:insert(muc_online_users, - #muc_online_users{us = US, resource = LResource, - room = Room, host = Host}), - ok. + ServerHost = StateData#state.server_host, + mod_muc:register_online_user(ServerHost, jid:tolower(JID), Room, Host). --spec tab_remove_online_user(jid(), state()) -> ok. +-spec tab_remove_online_user(jid(), state()) -> any(). tab_remove_online_user(JID, StateData) -> - {LUser, LServer, LResource} = jid:tolower(JID), - US = {LUser, LServer}, Room = StateData#state.room, Host = StateData#state.host, - catch ets:delete_object(muc_online_users, - #muc_online_users{us = US, resource = LResource, - room = Room, host = Host}), - ok. + ServerHost = StateData#state.server_host, + mod_muc:unregister_online_user(ServerHost, jid:tolower(JID), Room, Host). --spec tab_count_user(jid()) -> non_neg_integer(). -tab_count_user(JID) -> +-spec tab_count_user(jid(), state()) -> non_neg_integer(). +tab_count_user(JID, StateData) -> + ServerHost = StateData#state.server_host, {LUser, LServer, _} = jid:tolower(JID), - US = {LUser, LServer}, - case catch ets:select(muc_online_users, - [{#muc_online_users{us = US, _ = '_'}, [], [[]]}]) - of - Res when is_list(Res) -> length(Res); - _ -> 0 - end. + mod_muc:count_online_rooms_by_user(ServerHost, LUser, LServer). -spec element_size(stanza()) -> non_neg_integer(). element_size(El) -> |