session: fix closing ntfs handling for refused sessions 32/40632/4
authorFlorin Coras <fcoras@cisco.com>
Tue, 2 Apr 2024 02:51:22 +0000 (19:51 -0700)
committerDave Barach <vpp@barachs.net>
Tue, 2 Apr 2024 16:44:25 +0000 (16:44 +0000)
Type: fix

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

src/vnet/session/session_input.c

index 41e8beb..5899242 100644 (file)
@@ -225,11 +225,17 @@ app_worker_flush_events_inline (app_worker_t *app_wrk, u32 thread_index,
          break;
        case SESSION_CTRL_EVT_TRANSPORT_CLOSED:
          s = session_get (evt->session_index, thread_index);
+         /* Notification enqueued before session was refused by app */
+         if (PREDICT_FALSE (s->app_wrk_index == APP_INVALID_INDEX))
+           break;
          if (app->cb_fns.session_transport_closed_callback)
            app->cb_fns.session_transport_closed_callback (s);
          break;
        case SESSION_CTRL_EVT_CLEANUP:
          s = session_get (evt->as_u64[0] & 0xffffffff, thread_index);
+         /* Notification enqueued before session was refused by app */
+         if (PREDICT_FALSE (s->app_wrk_index == APP_INVALID_INDEX))
+           break;
          if (app->cb_fns.session_cleanup_callback)
            app->cb_fns.session_cleanup_callback (s, evt->as_u64[0] >> 32);
          if (evt->as_u64[0] >> 32 != SESSION_CLEANUP_SESSION)