From fca2f24231928593234630f255753c3b98341c54 Mon Sep 17 00:00:00 2001 From: xmppjingle Date: Mon, 18 Jul 2016 17:55:10 -0300 Subject: [PATCH 1/2] External Component Connection Hooks --- src/ejabberd_service.erl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl index 465fb587a..360475565 100644 --- a/src/ejabberd_service.erl +++ b/src/ejabberd_service.erl @@ -224,8 +224,10 @@ wait_for_handshake({xmlstreamelement, El}, StateData) -> fun (H) -> ejabberd_router:register_route(H, ?MYNAME), ?INFO_MSG("Route registered for service ~p~n", - [H]) - end, dict:fetch_keys(StateData#state.host_opts)), + [H]), + ejabberd_hooks:run(component_connected, + [H]) + end, dict:fetch_keys(StateData#state.host_opts)), {next_state, stream_established, StateData}; _ -> send_text(StateData, ?INVALID_HANDSHAKE_ERR), @@ -288,13 +290,19 @@ stream_established({xmlstreamelement, El}, StateData) -> end, {next_state, stream_established, StateData}; stream_established({xmlstreamend, _Name}, StateData) -> + ejabberd_hooks:run(component_disconnected, + [StateData#state.host]), {stop, normal, StateData}; stream_established({xmlstreamerror, _}, StateData) -> + ejabberd_hooks:run(component_disconnected, + [StateData#state.host]), send_text(StateData, <<(?INVALID_XML_ERR)/binary, (?STREAM_TRAILER)/binary>>), {stop, normal, StateData}; stream_established(closed, StateData) -> + ejabberd_hooks:run(component_disconnected, + [StateData#state.host]), {stop, normal, StateData}. %%---------------------------------------------------------------------- From 6983dfa21f2117ebb3d6c2921297708211fc2439 Mon Sep 17 00:00:00 2001 From: xmppjingle Date: Thu, 21 Jul 2016 14:03:01 -0300 Subject: [PATCH 2/2] External Component Hook Changed Hook Trigger Event and included a Reason upon component_disconnected/2 Hook --- src/ejabberd_service.erl | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl index 360475565..9d72b17b4 100644 --- a/src/ejabberd_service.erl +++ b/src/ejabberd_service.erl @@ -290,19 +290,13 @@ stream_established({xmlstreamelement, El}, StateData) -> end, {next_state, stream_established, StateData}; stream_established({xmlstreamend, _Name}, StateData) -> - ejabberd_hooks:run(component_disconnected, - [StateData#state.host]), {stop, normal, StateData}; stream_established({xmlstreamerror, _}, StateData) -> - ejabberd_hooks:run(component_disconnected, - [StateData#state.host]), send_text(StateData, <<(?INVALID_XML_ERR)/binary, (?STREAM_TRAILER)/binary>>), {stop, normal, StateData}; stream_established(closed, StateData) -> - ejabberd_hooks:run(component_disconnected, - [StateData#state.host]), {stop, normal, StateData}. %%---------------------------------------------------------------------- @@ -390,7 +384,9 @@ terminate(Reason, StateName, StateData) -> case StateName of stream_established -> lists:foreach(fun (H) -> - ejabberd_router:unregister_route(H) + ejabberd_router:unregister_route(H), + ejabberd_hooks:run(component_disconnected, + [StateData#state.host, Reason]) end, dict:fetch_keys(StateData#state.host_opts)); _ -> ok