diff options
author | Alexey Shchepin <alexey@process-one.net> | 2022-04-21 14:37:01 +0300 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2022-04-21 14:38:50 +0300 |
commit | 74e86611abb92e545870c88a25fbee1d960497d7 (patch) | |
tree | 49bb9eda62a0bc44febf8ebd6d10a071304644fa /src | |
parent | Fix dialyzer warning (diff) |
Stop empty MUC rooms 30 seconds after creation
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_muc_room.erl | 7 |
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}, |