diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2020-12-01 12:33:25 +0100 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2020-12-01 15:30:23 +0100 |
commit | 0fe64674ee799f4e7773e09b13b48d1f12c9d6b3 (patch) | |
tree | 94d274b79a47064fd7480d9ce1ab13121d7bca93 /src/mod_muc_admin.erl | |
parent | Handle unix sockets in misc:ip_to_list (diff) |
Make decide room better handle rooms that were just hibernated
Diffstat (limited to '')
-rw-r--r-- | src/mod_muc_admin.erl | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl index 7de833cc2..1523fcc91 100644 --- a/src/mod_muc_admin.erl +++ b/src/mod_muc_admin.erl @@ -874,12 +874,23 @@ decide_rooms(Method, Rooms, Last_allowed) -> decide_room(unused, {_Room_name, _Host, _ServerHost, Room_pid}, Last_allowed) -> NodeStartTime = erlang:system_time(microsecond) - 1000000*(erlang:monotonic_time(second)-ejabberd_config:get_node_start()), + OnlyHibernated = case mod_muc_opt:hibernation_timeout(ServerHost) of + Value when Value < Last_allowed*24*60*60*1000 -> + true; + _ -> + false + end, {Just_created, Num_users} = case Room_pid of + Pid when is_pid(Pid) andalso OnlyHibernated -> + {0, 0}; Pid when is_pid(Pid) -> - S = get_room_state(Room_pid), - {S#state.just_created, - maps:size(S#state.users)}; + case mod_muc_room:get_state(Room_pid) of + #state{just_created = JD, users = U} -> + {JD, maps:size(U)}; + _ -> + {0, 0} + end; Opts -> case lists:keyfind(hibernation_time, 1, Opts) of false -> |