aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_s2s_out.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_s2s_out.erl')
-rw-r--r--src/ejabberd_s2s_out.erl42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 32dda56ad..77f555475 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -40,7 +40,7 @@
handle_unexpected_cast/2, process_downgraded/2]).
%% API
-export([start/3, start_link/3, connect/1, close/1, stop/1, send/2,
- route/2, establish/1, update_state/2, add_hooks/0]).
+ route/2, establish/1, update_state/2, host_up/1, host_down/1]).
-include("ejabberd.hrl").
-include("xmpp.hrl").
@@ -99,21 +99,31 @@ establish(State) ->
update_state(Ref, Callback) ->
xmpp_stream_out:cast(Ref, {update_state, Callback}).
--spec add_hooks() -> ok.
-add_hooks() ->
- lists:foreach(
- fun(Host) ->
- ejabberd_hooks:add(s2s_out_auth_result, Host, ?MODULE,
- process_auth_result, 100),
- ejabberd_hooks:add(s2s_out_closed, Host, ?MODULE,
- process_closed, 100),
- ejabberd_hooks:add(s2s_out_handle_info, Host, ?MODULE,
- handle_unexpected_info, 100),
- ejabberd_hooks:add(s2s_out_handle_cast, Host, ?MODULE,
- handle_unexpected_cast, 100),
- ejabberd_hooks:add(s2s_out_downgraded, Host, ?MODULE,
- process_downgraded, 100)
- end, ?MYHOSTS).
+-spec host_up(binary()) -> ok.
+host_up(Host) ->
+ ejabberd_hooks:add(s2s_out_auth_result, Host, ?MODULE,
+ process_auth_result, 100),
+ ejabberd_hooks:add(s2s_out_closed, Host, ?MODULE,
+ process_closed, 100),
+ ejabberd_hooks:add(s2s_out_handle_info, Host, ?MODULE,
+ handle_unexpected_info, 100),
+ ejabberd_hooks:add(s2s_out_handle_cast, Host, ?MODULE,
+ handle_unexpected_cast, 100),
+ ejabberd_hooks:add(s2s_out_downgraded, Host, ?MODULE,
+ process_downgraded, 100).
+
+-spec host_down(binary()) -> ok.
+host_down(Host) ->
+ ejabberd_hooks:delete(s2s_out_auth_result, Host, ?MODULE,
+ process_auth_result, 100),
+ ejabberd_hooks:delete(s2s_out_closed, Host, ?MODULE,
+ process_closed, 100),
+ ejabberd_hooks:delete(s2s_out_handle_info, Host, ?MODULE,
+ handle_unexpected_info, 100),
+ ejabberd_hooks:delete(s2s_out_handle_cast, Host, ?MODULE,
+ handle_unexpected_cast, 100),
+ ejabberd_hooks:delete(s2s_out_downgraded, Host, ?MODULE,
+ process_downgraded, 100).
%%%===================================================================
%%% Hooks