summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/quic/quic.c16
-rw-r--r--test/asf/test_quic.py1
2 files changed, 6 insertions, 11 deletions
diff --git a/src/plugins/quic/quic.c b/src/plugins/quic/quic.c
index f94a0c8d879..a728d2a86f9 100644
--- a/src/plugins/quic/quic.c
+++ b/src/plugins/quic/quic.c
@@ -1045,6 +1045,8 @@ quic_on_stream_open (quicly_stream_open_t * self, quicly_stream_t * stream)
stream_session->session_type =
session_type_from_proto_and_ip (TRANSPORT_PROTO_QUIC, qctx->udp_is_ip4);
quic_session = session_get (qctx->c_s_index, qctx->c_thread_index);
+ /* Make sure quic session is in listening state */
+ quic_session->session_state = SESSION_STATE_LISTENING;
stream_session->listener_handle = listen_session_get_handle (quic_session);
app_wrk = app_worker_get (stream_session->app_wrk_index);
@@ -1058,6 +1060,7 @@ quic_on_stream_open (quicly_stream_open_t * self, quicly_stream_t * stream)
SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL |
SVM_FIFO_WANT_DEQ_NOTIF_IF_EMPTY);
+ stream_session->session_state = SESSION_STATE_ACCEPTING;
if ((rv = app_worker_accept_notify (app_wrk, stream_session)))
{
QUIC_ERR ("failed to notify accept worker app");
@@ -1567,7 +1570,7 @@ format_quic_ctx (u8 * s, va_list * args)
if (!ctx)
return s;
- str = format (str, "[#%d][Q] ", ctx->c_thread_index);
+ str = format (str, "[%d:%d][Q] ", ctx->c_thread_index, ctx->c_s_index);
if (quic_ctx_is_listener (ctx))
str = format (str, "Listener, UDP %ld", ctx->udp_session_handle);
@@ -1685,15 +1688,6 @@ quic_on_quic_session_connected (quic_ctx_t * ctx)
quic_proto_on_close (ctx_id, thread_index);
return;
}
-
- /* If the app opens a stream in its callback it may invalidate ctx */
- ctx = quic_ctx_get (ctx_id, thread_index);
- /*
- * app_worker_connect_notify() might have reallocated pool, reload
- * quic_session pointer
- */
- quic_session = session_get (ctx->c_s_index, thread_index);
- quic_session->session_state = SESSION_STATE_LISTENING;
}
static void
@@ -2120,7 +2114,6 @@ quic_accept_connection (quic_rx_packet_ctx_t * pctx)
quic_session = session_alloc (ctx->c_thread_index);
QUIC_DBG (2, "Allocated quic_session, 0x%lx ctx %u",
session_handle (quic_session), ctx->c_c_index);
- quic_session->session_state = SESSION_STATE_LISTENING;
ctx->c_s_index = quic_session->session_index;
lctx = quic_ctx_get (ctx->listener_ctx_id, 0);
@@ -2146,6 +2139,7 @@ quic_accept_connection (quic_rx_packet_ctx_t * pctx)
}
app_wrk = app_worker_get (quic_session->app_wrk_index);
+ quic_session->session_state = SESSION_STATE_ACCEPTING;
if ((rv = app_worker_accept_notify (app_wrk, quic_session)))
{
QUIC_ERR ("failed to notify accept worker app");
diff --git a/test/asf/test_quic.py b/test/asf/test_quic.py
index 8179b2f2366..4f816a36f0c 100644
--- a/test/asf/test_quic.py
+++ b/test/asf/test_quic.py
@@ -299,6 +299,7 @@ class QUICEchoExtTestCase(QUICTestCase):
def validate_ext_test_results(self):
server_result = self.worker_server.result
+ self.logger.debug(self.vapi.cli(f"show session verbose 2"))
client_result = self.worker_client.result
self.logger.info(f"Server worker result is `{server_result}'")
self.logger.info(f"Client worker result is `{client_result}'")