diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2013-06-19 21:30:31 +1000 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2013-06-19 21:46:22 +1000 |
commit | 89c3cf3677e8b10dbf237e19b43e0fcabd6e72e0 (patch) | |
tree | 691108ad6361ad684a248fb40584f372c2086862 /src | |
parent | Add tests for modules using MySQL/PostgreSQL (diff) |
Shutdown rooms before starting test cases
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_muc.erl | 16 | ||||
-rw-r--r-- | src/mod_muc_room.erl | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl index 05becd20b..7dd1736db 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -41,6 +41,7 @@ restore_room/3, forget_room/3, create_room/5, + shutdown_rooms/1, process_iq_disco_items/4, broadcast_service_message/2, can_use_nick/4]). @@ -96,10 +97,23 @@ start(Host, Opts) -> supervisor:start_child(ejabberd_sup, ChildSpec). stop(Host) -> + Rooms = shutdown_rooms(Host), stop_supervisor(Host), Proc = gen_mod:get_module_proc(Host, ?PROCNAME), gen_server:call(Proc, stop), - supervisor:delete_child(ejabberd_sup, Proc). + supervisor:delete_child(ejabberd_sup, Proc), + {wait, Rooms}. + +shutdown_rooms(Host) -> + MyHost = gen_mod:get_module_opt_host(Host, mod_muc, + <<"conference.@HOST@">>), + Rooms = mnesia:dirty_select(muc_online_room, + [{#muc_online_room{name_host = '$1', + pid = '$2'}, + [{'==', {element, 2, '$1'}, MyHost}], + ['$2']}]), + [Pid ! shutdown || Pid <- Rooms], + Rooms. %% This function is called by a room in three situations: %% A) The owner of the room destroyed it diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 7c9bdd41b..05a6ec4c0 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -830,6 +830,8 @@ handle_info({captcha_failed, From}, normal_state, _ -> StateData end, {next_state, normal_state, NewState}; +handle_info(shutdown, _StateName, StateData) -> + {stop, shutdown, StateData}; handle_info(_Info, StateName, StateData) -> {next_state, StateName, StateData}. |