]> granicus.if.org Git - ejabberd/commitdiff
Fix component routes unregistration
authorEvgeny Khramtsov <ekhramtsov@process-one.net>
Mon, 17 Jun 2019 09:29:04 +0000 (12:29 +0300)
committerEvgeny Khramtsov <ekhramtsov@process-one.net>
Mon, 17 Jun 2019 09:29:04 +0000 (12:29 +0300)
Fixes #2910

src/ejabberd_service.erl

index 3130823fcecbfbe004b68a050ef7667f7db17da7..aed20a823e1b99113ade6629b9cc19033694cdc6 100644 (file)
@@ -171,7 +171,7 @@ handle_auth_success(_, Mech, _,
              ejabberd_router:register_route(H, ejabberd_config:get_myname()),
              ejabberd_hooks:run(component_connected, [H])
       end, Routes),
-    State.
+    State#{routes => Routes}.
 
 handle_auth_failure(_, Mech, Reason,
                    #{remote_server := RemoteServer,
@@ -219,25 +219,12 @@ handle_info(Info, State) ->
     ?ERROR_MSG("Unexpected info: ~p", [Info]),
     State.
 
-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, Routes);
-       _ ->
-           ok
-    end;
+terminate(Reason, #{routes := Routes}) ->
+    lists:foreach(
+      fun(H) ->
+             ejabberd_router:unregister_route(H),
+             ejabberd_hooks:run(component_disconnected, [H, Reason])
+      end, Routes);
 terminate(_Reason, _State) ->
     ok.