aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2024-06-11 12:17:04 -0700
committerDave Wallace <dwallacelf@gmail.com>2024-06-12 14:56:51 +0000
commit7080294116708e4e6cc0e0c11db712956e82c14c (patch)
tree074011c7a42d8e17a637ceef83d44b739ea5de66 /src/vnet/session
parent518bcc1028d00c4482f2ced33ddf84a90fb553e1 (diff)
session: fix ho cleanup on active and passive close
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I9e7011ff45f14e17fc0d0d63800184f404c29093
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/session.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index 67e7ee39001..32c987cc5d9 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -1659,8 +1659,10 @@ session_transport_close (session_t * s)
{
if (s->session_state == SESSION_STATE_TRANSPORT_CLOSED)
session_set_state (s, SESSION_STATE_CLOSED);
- /* If transport is already deleted, just free the session */
- else if (s->session_state >= SESSION_STATE_TRANSPORT_DELETED)
+ /* If transport is already deleted, just free the session. Half-opens
+ * expected to be already cleaning up at this point */
+ else if (s->session_state >= SESSION_STATE_TRANSPORT_DELETED &&
+ !(s->flags & SESSION_F_HALF_OPEN))
session_program_cleanup (s);
return;
}