aboutsummaryrefslogtreecommitdiff
path: root/src/mod_muc_admin.erl
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2020-12-01 12:33:25 +0100
committerPaweł Chmielowski <pchmielowski@process-one.net>2020-12-01 15:30:23 +0100
commit0fe64674ee799f4e7773e09b13b48d1f12c9d6b3 (patch)
tree94d274b79a47064fd7480d9ce1ab13121d7bca93 /src/mod_muc_admin.erl
parentHandle 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.erl17
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 ->