diff options
Diffstat (limited to 'src/vnet/session/application.c')
-rw-r--r-- | src/vnet/session/application.c | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/src/vnet/session/application.c b/src/vnet/session/application.c index d3e598ca271..d8b2b3edcf0 100644 --- a/src/vnet/session/application.c +++ b/src/vnet/session/application.c @@ -947,6 +947,31 @@ application_detach_process (application_t * app, u32 api_client_index) vec_free (wrks); } +void +application_namespace_cleanup (app_namespace_t *app_ns) +{ + u32 *app_indices = 0, *app_index; + application_t *app; + u32 ns_index; + + ns_index = app_namespace_index (app_ns); + pool_foreach (app, app_main.app_pool) + if (app->ns_index == ns_index) + vec_add1 (app_indices, app->ns_index); + + vec_foreach (app_index, app_indices) + { + app = application_get (*app_index); + + if (application_is_proxy (app)) + application_remove_proxy (app); + app->flags &= ~APP_OPTIONS_FLAGS_IS_PROXY; + + application_free (app); + } + vec_free (app_indices); +} + app_worker_t * application_get_worker (application_t * app, u32 wrk_map_index) { @@ -1611,12 +1636,8 @@ application_setup_proxy (application_t * app) ASSERT (application_is_proxy (app)); - /* *INDENT-OFF* */ - transport_proto_foreach (tp, ({ - if (transports & (1 << tp)) - application_start_stop_proxy (app, tp, 1); - })); - /* *INDENT-ON* */ + transport_proto_foreach (tp, transports) + application_start_stop_proxy (app, tp, 1); } void @@ -1627,12 +1648,8 @@ application_remove_proxy (application_t * app) ASSERT (application_is_proxy (app)); - /* *INDENT-OFF* */ - transport_proto_foreach (tp, ({ - if (transports & (1 << tp)) - application_start_stop_proxy (app, tp, 0); - })); - /* *INDENT-ON* */ + transport_proto_foreach (tp, transports) + application_start_stop_proxy (app, tp, 0); } segment_manager_props_t * |