From 7d6811226536fe260d83617a16fd741edb2d97f3 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Thu, 23 Feb 2017 10:12:19 +0300 Subject: Start/stop virtual hosts when reloading configuration file --- src/ejabberd_s2s_in.erl | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'src/ejabberd_s2s_in.erl') diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl index f9d9e6f8..4289a8b3 100644 --- a/src/ejabberd_s2s_in.erl +++ b/src/ejabberd_s2s_in.erl @@ -42,7 +42,8 @@ -export([handle_unexpected_info/2, handle_unexpected_cast/2, reject_unauthenticated_packet/2, process_closed/2]). %% API --export([stop/1, close/1, send/2, update_state/2, establish/1, add_hooks/0]). +-export([stop/1, close/1, send/2, update_state/2, establish/1, + host_up/1, host_down/1]). -include("ejabberd.hrl"). -include("xmpp.hrl"). @@ -90,19 +91,27 @@ establish(State) -> update_state(Ref, Callback) -> xmpp_stream_in:cast(Ref, {update_state, Callback}). --spec add_hooks() -> ok. -add_hooks() -> - lists:foreach( - fun(Host) -> - ejabberd_hooks:add(s2s_in_closed, Host, ?MODULE, - process_closed, 100), - ejabberd_hooks:add(s2s_in_unauthenticated_packet, Host, ?MODULE, - reject_unauthenticated_packet, 100), - ejabberd_hooks:add(s2s_in_handle_info, Host, ?MODULE, - handle_unexpected_info, 100), - ejabberd_hooks:add(s2s_in_handle_cast, Host, ?MODULE, - handle_unexpected_cast, 100) - end, ?MYHOSTS). +-spec host_up(binary()) -> ok. +host_up(Host) -> + ejabberd_hooks:add(s2s_in_closed, Host, ?MODULE, + process_closed, 100), + ejabberd_hooks:add(s2s_in_unauthenticated_packet, Host, ?MODULE, + reject_unauthenticated_packet, 100), + ejabberd_hooks:add(s2s_in_handle_info, Host, ?MODULE, + handle_unexpected_info, 100), + ejabberd_hooks:add(s2s_in_handle_cast, Host, ?MODULE, + handle_unexpected_cast, 100). + +-spec host_down(binary()) -> ok. +host_down(Host) -> + ejabberd_hooks:delete(s2s_in_closed, Host, ?MODULE, + process_closed, 100), + ejabberd_hooks:delete(s2s_in_unauthenticated_packet, Host, ?MODULE, + reject_unauthenticated_packet, 100), + ejabberd_hooks:delete(s2s_in_handle_info, Host, ?MODULE, + handle_unexpected_info, 100), + ejabberd_hooks:delete(s2s_in_handle_cast, Host, ?MODULE, + handle_unexpected_cast, 100). %%%=================================================================== %%% Hooks -- cgit v1.2.3