diff options
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), |