session: close app wrk socket on delete 84/33484/4
authorFlorin Coras <fcoras@cisco.com>
Fri, 13 Aug 2021 01:12:09 +0000 (18:12 -0700)
committerDave Barach <openvpp@barachs.net>
Mon, 30 Aug 2021 14:26:23 +0000 (14:26 +0000)
Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I54fa6e8f12bb52988888e7019a88d6891017944c

src/vnet/session/application.c
src/vnet/session/application.h
src/vnet/session/session_api.c

index 7fe8188..d3e598c 100644 (file)
@@ -1061,6 +1061,8 @@ vnet_app_worker_add_del (vnet_app_worker_add_del_args_t * a)
        return VNET_API_ERROR_INVALID_VALUE;
 
       application_api_table_del (app_wrk->api_client_index);
+      if (appns_sapi_enabled ())
+       sapi_socket_close_w_handle (app_wrk->api_client_index);
       app_worker_free (app_wrk);
       app_worker_map_free (app, wrk_map);
       if (application_n_workers (app) == 0)
index 5ddf1d2..6afbaa3 100644 (file)
@@ -364,6 +364,7 @@ int mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context,
                                  session_t * s, session_error_t err);
 void mq_send_unlisten_reply (app_worker_t * app_wrk, session_handle_t sh,
                             u32 context, int rv);
+void sapi_socket_close_w_handle (u32 api_handle);
 
 crypto_engine_type_t app_crypto_engine_type_add (void);
 u8 app_crypto_engine_n_types (void);
index e420099..e6aac95 100644 (file)
@@ -1385,7 +1385,7 @@ done:
   vec_free (fds);
 }
 
-static void
+void
 sapi_socket_close_w_handle (u32 api_handle)
 {
   app_namespace_t *app_ns = app_namespace_get (api_handle >> 16);
@@ -1443,10 +1443,7 @@ sapi_add_del_worker_handler (app_namespace_t * app_ns,
     }
 
   if (!mp->is_add)
-    {
-      sapi_socket_close_w_handle (sapi_handle);
-      goto done;
-    }
+    goto done;
 
   /* Send fifo segment fd if needed */
   if (ssvm_type (args.segment) == SSVM_SEGMENT_MEMFD)
@@ -1573,7 +1570,6 @@ sapi_socket_detach (app_namespace_t * app_ns, clib_socket_t * cs)
   u32 api_client_handle;
 
   api_client_handle = appns_sapi_socket_handle (app_ns, cs);
-  sapi_socket_close_w_handle (api_client_handle);
 
   /* Cleanup everything because app worker closed socket or crashed */
   handle = (app_ns_api_handle_t *) & cs->private_data;