Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-02-14 13:09:27 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-02-14 13:09:27 +0300
commita65500b6aa6de8c57731a07f212abd7aef541646 (patch)
tree20c7275fbd96088871b3b5bb69e14bdb4fe43d68
parent032f79629288a30aa0288f77ec06d210de943d0c (diff)
Fix external components unregistration
-rw-r--r--src/ejabberd_service.erl16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl
index 8cfaa6314..de4ab1fd2 100644
--- a/src/ejabberd_service.erl
+++ b/src/ejabberd_service.erl
@@ -213,17 +213,27 @@ handle_info(Info, State) ->
?ERROR_MSG("Unexpected info: ~p", [Info]),
State.
-terminate(Reason, #{stream_state := StreamState, host_opts := HostOpts}) ->
+terminate(Reason, #{stream_state := StreamState,
+ host_opts := HostOpts,
+ remote_server := RemoteServer,
+ global_routes := GlobalRoutes}) ->
case StreamState of
established ->
+ Routes = if GlobalRoutes ->
+ dict:fetch_keys(HostOpts);
+ true ->
+ [RemoteServer]
+ end,
lists:foreach(
fun(H) ->
ejabberd_router:unregister_route(H),
ejabberd_hooks:run(component_disconnected, [H, Reason])
- end, dict:fetch_keys(HostOpts));
+ end, Routes);
_ ->
ok
- end.
+ end;
+terminate(_Reason, _State) ->
+ ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.