From 7453b5dfe8a52d0e033ec675eba3ada26ba771a3 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 14 Feb 2024 16:14:46 -0800 Subject: session: postpone ct cleanup if rx evt pending Type: fix Change-Id: I8cfaa62abd38d5356263b0ffd428638d1a027617 Signed-off-by: Florin Coras (cherry picked from commit 3efcbaf3b1119b4312ae1f3a1c59dea2d746bec4) --- src/vnet/session/application_local.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vnet/session/application_local.c b/src/vnet/session/application_local.c index 8c6cf8a93fa..5bd1471b6fc 100644 --- a/src/vnet/session/application_local.c +++ b/src/vnet/session/application_local.c @@ -1132,10 +1132,10 @@ ct_handle_cleanups (void *args) clib_fifo_sub2 (wrk->pending_cleanups, req); ct = ct_connection_get (req->ct_index, thread_index); s = session_get (ct->c_s_index, ct->c_thread_index); - if (!svm_fifo_has_event (s->tx_fifo)) - ct_session_postponed_cleanup (ct); - else + if (svm_fifo_has_event (s->tx_fifo) || (s->flags & SESSION_F_RX_EVT)) clib_fifo_add1 (wrk->pending_cleanups, *req); + else + ct_session_postponed_cleanup (ct); n_to_handle -= 1; } @@ -1411,6 +1411,7 @@ ct_session_tx (session_t * s) peer_s = session_get (peer_ct->c_s_index, peer_ct->c_thread_index); if (peer_s->session_state >= SESSION_STATE_TRANSPORT_CLOSING) return 0; + peer_s->flags |= SESSION_F_RX_EVT; return session_enqueue_notify (peer_s); } -- cgit 1.2.3-korg