session: add thread index to all formatters
[vpp.git] / src / plugins / quic / quic.c
index 8732b7d..a96cb85 100644 (file)
@@ -306,6 +306,14 @@ quic_ctx_get (u32 ctx_index, u32 thread_index)
   return pool_elt_at_index (quic_main.ctx_pool[thread_index], ctx_index);
 }
 
+static quic_ctx_t *
+quic_ctx_get_if_valid (u32 ctx_index, u32 thread_index)
+{
+  if (pool_is_free_index (quic_main.ctx_pool[thread_index], ctx_index))
+    return 0;
+  return pool_elt_at_index (quic_main.ctx_pool[thread_index], ctx_index);
+}
+
 static quic_ctx_t *
 quic_get_conn_ctx (quicly_conn_t * conn)
 {
@@ -1494,7 +1502,9 @@ quic_connect (transport_endpoint_cfg_t * tep)
 static void
 quic_proto_on_close (u32 ctx_index, u32 thread_index)
 {
-  quic_ctx_t *ctx = quic_ctx_get (ctx_index, thread_index);
+  quic_ctx_t *ctx = quic_ctx_get_if_valid (ctx_index, thread_index);
+  if (!ctx)
+    return;
 #if QUIC_DEBUG >= 2
   session_t *stream_session =
     session_get (ctx->c_s_index, ctx->c_thread_index);
@@ -1667,7 +1677,8 @@ static u8 *
 format_quic_half_open (u8 * s, va_list * args)
 {
   u32 qc_index = va_arg (*args, u32);
-  quic_ctx_t *ctx = quic_ctx_get (qc_index, vlib_get_thread_index ());
+  u32 thread_index = va_arg (*args, u32);
+  quic_ctx_t *ctx = quic_ctx_get (qc_index, thread_index);
   s = format (s, "[QUIC] half-open app %u", ctx->parent_app_id);
   return s;
 }
@@ -1677,8 +1688,9 @@ static u8 *
 format_quic_listener (u8 * s, va_list * args)
 {
   u32 tci = va_arg (*args, u32);
+  u32 thread_index = va_arg (*args, u32);
   u32 verbose = va_arg (*args, u32);
-  quic_ctx_t *ctx = quic_ctx_get (tci, vlib_get_thread_index ());
+  quic_ctx_t *ctx = quic_ctx_get (tci, thread_index);
   if (ctx)
     {
       ASSERT (quic_ctx_is_listener (ctx));