session: avoid clearing fifos while closing 28/42928/3
authorFlorin Coras <[email protected]>
Wed, 7 May 2025 05:56:15 +0000 (22:56 -0700)
committerDave Barach <[email protected]>
Wed, 7 May 2025 20:50:05 +0000 (20:50 +0000)
Allow apps to scrape amount of undelivered data before cleanup.

Type: improvement

Change-Id: Ia925bfdd9ee168f5b9da0ddd3048cf4ed2fd440e
Signed-off-by: Florin Coras <[email protected]>
src/vnet/session/session.c

index 35da9ef..27a4177 100644 (file)
@@ -966,7 +966,6 @@ session_transport_delete_notify (transport_connection_t * tc)
       session_lookup_del_session (s);
       session_set_state (s, SESSION_STATE_TRANSPORT_DELETED);
       session_cleanup_notify (s, SESSION_CLEANUP_TRANSPORT);
-      svm_fifo_dequeue_drop_all (s->tx_fifo);
       break;
     case SESSION_STATE_APP_CLOSED:
       /* Cleanup lookup table as transport needs to still be valid.
@@ -977,7 +976,6 @@ session_transport_delete_notify (transport_connection_t * tc)
       session_lookup_del_session (s);
       session_set_state (s, SESSION_STATE_TRANSPORT_DELETED);
       session_cleanup_notify (s, SESSION_CLEANUP_TRANSPORT);
-      svm_fifo_dequeue_drop_all (s->tx_fifo);
       session_program_transport_ctrl_evt (s, SESSION_CTRL_EVT_CLOSE);
       break;
     case SESSION_STATE_TRANSPORT_DELETED:
@@ -1039,7 +1037,6 @@ session_transport_delete_request (transport_connection_t *tc,
       session_lookup_del_session (s);
       session_set_state (s, SESSION_STATE_TRANSPORT_DELETED);
       session_cleanup_notify_custom (s, SESSION_CLEANUP_TRANSPORT, cb_fn);
-      svm_fifo_dequeue_drop_all (s->tx_fifo);
       break;
     case SESSION_STATE_APP_CLOSED:
       /* Cleanup lookup table as transport needs to still be valid.
@@ -1050,7 +1047,6 @@ session_transport_delete_request (transport_connection_t *tc,
       session_lookup_del_session (s);
       session_set_state (s, SESSION_STATE_TRANSPORT_DELETED);
       session_cleanup_notify_custom (s, SESSION_CLEANUP_TRANSPORT, cb_fn);
-      svm_fifo_dequeue_drop_all (s->tx_fifo);
       session_program_transport_ctrl_evt (s, SESSION_CTRL_EVT_CLOSE);
       break;
     case SESSION_STATE_TRANSPORT_DELETED:
@@ -1097,7 +1093,6 @@ session_transport_closed_notify (transport_connection_t * tc)
   if (s->session_state == SESSION_STATE_READY)
     {
       session_transport_closing_notify (tc);
-      svm_fifo_dequeue_drop_all (s->tx_fifo);
       session_set_state (s, SESSION_STATE_TRANSPORT_CLOSED);
     }
   /* If app close has not been received or has not yet resulted in
@@ -1123,7 +1118,6 @@ session_transport_reset_notify (transport_connection_t * tc)
   session_t *s;
 
   s = session_get (tc->s_index, tc->thread_index);
-  svm_fifo_dequeue_drop_all (s->tx_fifo);
   if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
     return;
   if (s->session_state == SESSION_STATE_ACCEPTING)