aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2022-04-21 14:37:01 +0300
committerAlexey Shchepin <alexey@process-one.net>2022-04-21 14:38:50 +0300
commit74e86611abb92e545870c88a25fbee1d960497d7 (patch)
tree49bb9eda62a0bc44febf8ebd6d10a071304644fa /src
parentFix dialyzer warning (diff)
Stop empty MUC rooms 30 seconds after creation
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc_room.erl7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index fd2c931a3..84ff8252f 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -85,6 +85,7 @@
-define(MUC_HAT_LIST_CMD, <<"p1:hats#list">>).
-define(MAX_HATS_USERS, 100).
-define(MAX_HATS_PER_USER, 10).
+-define(CLEAN_ROOM_TIMEOUT, 30000).
%-define(DBGFSM, true).
@@ -309,6 +310,8 @@ init([Host, ServerHost, Access, Room, HistorySize,
add_to_log(room_existence, created, State1),
add_to_log(room_existence, started, State1),
ejabberd_hooks:run(start_room, ServerHost, [ServerHost, Room, Host]),
+ erlang:send_after(?CLEAN_ROOM_TIMEOUT, self(),
+ close_room_if_temporary_and_empty),
{ok, normal_state, reset_hibernate_timer(State1)};
init([Host, ServerHost, Access, Room, HistorySize, RoomShaper, Opts, QueueType]) ->
process_flag(trap_exit, true),
@@ -325,6 +328,8 @@ init([Host, ServerHost, Access, Room, HistorySize, RoomShaper, Opts, QueueType])
add_to_log(room_existence, started, State),
ejabberd_hooks:run(start_room, ServerHost, [ServerHost, Room, Host]),
State1 = cleanup_affiliations(State),
+ erlang:send_after(?CLEAN_ROOM_TIMEOUT, self(),
+ close_room_if_temporary_and_empty),
{ok, normal_state, reset_hibernate_timer(State1)}.
normal_state({route, <<"">>,
@@ -891,6 +896,8 @@ handle_info({captcha_failed, From}, normal_state,
StateData
end,
{next_state, normal_state, NewState};
+handle_info(close_room_if_temporary_and_empty, _StateName, StateData) ->
+ close_room_if_temporary_and_empty(StateData);
handle_info(shutdown, _StateName, StateData) ->
{stop, shutdown, StateData};
handle_info({iq_reply, #iq{type = Type, sub_els = Els},