tls: fix forced ho cleanup

Do not force cleanup of tcp half-open connection if tcp's cleanup
notification to tls is pending.

Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I7bccbe8429a4aab10df1c89b66138b967e04ac19
This commit is contained in:
Florin Coras
2023-11-10 09:48:39 -08:00
committed by Florin Coras
parent f9ab6985d4
commit 4aaedaa2ff

View File

@ -427,7 +427,8 @@ tls_session_cleanup_ho (session_t *s)
/* session opaque stores the opaque passed on connect */ /* session opaque stores the opaque passed on connect */
ho_index = s->opaque; ho_index = s->opaque;
ctx = tls_ctx_half_open_get (ho_index); ctx = tls_ctx_half_open_get (ho_index);
session_half_open_delete_notify (&ctx->connection); if (!ctx->no_app_session)
session_half_open_delete_notify (&ctx->connection);
tls_ctx_half_open_free (ho_index); tls_ctx_half_open_free (ho_index);
} }
@ -946,10 +947,19 @@ static void
tls_cleanup_ho (u32 ho_index) tls_cleanup_ho (u32 ho_index)
{ {
tls_ctx_t *ctx; tls_ctx_t *ctx;
session_t *s;
ctx = tls_ctx_half_open_get (ho_index); ctx = tls_ctx_half_open_get (ho_index);
session_cleanup_half_open (ctx->tls_session_handle); s = session_get_from_handle (ctx->tls_session_handle);
tls_ctx_half_open_free (ho_index); /* If no pending cleanup notification, force cleanup now. Otherwise,
* wait for cleanup notification and set no app session on ctx */
if (s->session_state != SESSION_STATE_TRANSPORT_DELETED)
{
session_cleanup_half_open (ctx->tls_session_handle);
tls_ctx_half_open_free (ho_index);
}
else
ctx->no_app_session = 1;
} }
int int