diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2020-10-13 12:52:25 +0200 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2020-10-13 13:00:57 +0200 |
commit | 73f8aded176cc880a75959dbd7e6348e3ea33729 (patch) | |
tree | 7874a09084053f6f9ae7d86f24bb3e431b59e550 /src/mod_muc.erl | |
parent | Added sql_odbc_driver option for mssql db (diff) |
Make mod_muc_admin command work correctly with hibernated rooms
This should first try to unhibernate rooms before trying to send messages
to processes handling them.
Diffstat (limited to 'src/mod_muc.erl')
-rw-r--r-- | src/mod_muc.erl | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl index c30d3a190..28a0f505d 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -68,7 +68,7 @@ can_use_nick/4, get_subscribed_rooms/2, procname/2, - route/1]). + route/1, unhibernate_room/3]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3, @@ -526,6 +526,18 @@ extract_password(#iq{} = IQ) -> false end. +-spec unhibernate_room(binary(), binary(), binary()) -> {ok, pid()} | error. +unhibernate_room(ServerHost, Host, Room) -> + RMod = gen_mod:ram_db_mod(ServerHost, ?MODULE), + case RMod:find_online_room(ServerHost, Room, Host) of + error -> + case load_room(RMod, Host, ServerHost, Room) of + {ok, _} = R -> R; + _ -> error + end; + {ok, _} = R2 -> R2 + end. + -spec route_to_room(stanza(), binary()) -> ok. route_to_room(Packet, ServerHost) -> From = xmpp:get_from(Packet), |