quic: remove session flags identifying Q/S sessions 36/20236/3
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>
Wed, 19 Jun 2019 12:47:41 +0000 (14:47 +0200)
committerFlorin Coras <florin.coras@gmail.com>
Thu, 20 Jun 2019 14:43:19 +0000 (14:43 +0000)
Type: refactor

Change-Id: Id68c5ae6d57df0fc556bbf583a66e538e641ffb1
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
src/plugins/quic/quic.c
src/vnet/session-apps/echo_client.c
src/vnet/session-apps/echo_server.c
src/vnet/session/session_types.h

index 16ad2c1..0b6c975 100644 (file)
@@ -541,7 +541,6 @@ quic_accept_stream (void *s)
 
   sctx->c_s_index = stream_session->session_index;
   stream_session->session_state = SESSION_STATE_CREATED;
-  stream_session->flags |= SESSION_F_QUIC_STREAM;
   stream_session->app_wrk_index = sctx->c_quic_ctx_id.parent_app_wrk_id;
   stream_session->connection_index = sctx->c_c_index;
   stream_session->session_type =
@@ -1194,7 +1193,6 @@ quic_connect_new_stream (session_endpoint_cfg_t * sep)
   QUIC_DBG (2, "Allocated stream_session, id %u, thread %u ctx %u",
            stream_session->session_index, stream_session->thread_index,
            sctx_index);
-  stream_session->flags |= SESSION_F_QUIC_STREAM;
   stream_session->app_wrk_index = app_wrk->wrk_index;
   stream_session->connection_index = sctx_index;
   stream_session->listener_handle = quic_session_handle;
@@ -1500,14 +1498,12 @@ quic_build_sockaddr (struct sockaddr *sa, socklen_t * salen,
 }
 
 static int
-quic_notify_app_connected (quic_ctx_t * ctx)
+quic_on_client_connected (quic_ctx_t * ctx)
 {
-  QUIC_DBG (1, "quic_notify_app_connected");
   session_t *quic_session;
   app_worker_t *app_wrk;
   u32 ctx_id = ctx->c_c_index;
   u32 thread_index = ctx->c_thread_index;
-  quic_ctx_t *lctx;
 
   app_wrk = app_worker_get_if_valid (ctx->c_quic_ctx_id.parent_app_wrk_id);
   if (!app_wrk)
@@ -1518,13 +1514,12 @@ quic_notify_app_connected (quic_ctx_t * ctx)
 
   quic_session = session_alloc (thread_index);
 
-  lctx = quic_ctx_get (ctx->c_quic_ctx_id.listener_ctx_id, 0);
   QUIC_DBG (2, "Allocated quic_session, id %u, thread %u",
            quic_session->session_index, quic_session->thread_index);
   ctx->c_s_index = quic_session->session_index;
   quic_session->app_wrk_index = ctx->c_quic_ctx_id.parent_app_wrk_id;
   quic_session->connection_index = ctx->c_c_index;
-  quic_session->listener_handle = lctx->c_s_index;
+  quic_session->listener_handle = SESSION_INVALID_HANDLE;
   quic_session->session_type =
     session_type_from_proto_and_ip (TRANSPORT_PROTO_QUIC,
                                    ctx->c_quic_ctx_id.udp_is_ip4);
@@ -1911,7 +1906,7 @@ quic_receive (quic_ctx_t * ctx, quicly_conn_t * conn,
          ctx->conn_state = QUIC_CONN_STATE_READY;
          if (quicly_is_client (conn))
            {
-             quic_notify_app_connected (ctx);
+             quic_on_client_connected (ctx);
              ctx = quic_ctx_get (ctx_id, thread_index);
            }
        }
index bde9f48..24a3433 100644 (file)
@@ -420,7 +420,7 @@ quic_echo_clients_session_connected_callback (u32 app_index, u32 api_context,
       return 0;
     }
 
-  if (!(s->flags & SESSION_F_QUIC_STREAM))
+  if (s->listener_handle == SESSION_INVALID_HANDLE)
     return quic_echo_clients_qsession_connected_callback (app_index,
                                                          api_context, s,
                                                          is_fail);
index 7459d03..b7a7481 100644 (file)
@@ -55,6 +55,7 @@ typedef struct
   u64 byte_index;
   u32 **rx_retries;
   u8 transport_proto;
+  u64 listener_handle;         /**< Session handle of the root listener */
 
   vlib_main_t *vlib_main;
 } echo_server_main_t;
@@ -72,7 +73,7 @@ int
 quic_echo_server_session_accept_callback (session_t * s)
 {
   echo_server_main_t *esm = &echo_server_main;
-  if (!(s->flags & SESSION_F_QUIC_STREAM))
+  if (s->listener_handle == esm->listener_handle)
     return quic_echo_server_qsession_accept_callback (s);
   DBG ("SSESSION %u accept w/opaque %d", s->session_index, s->opaque);
 
@@ -398,12 +399,15 @@ echo_server_detach (void)
 static int
 echo_server_listen ()
 {
+  int rv;
   echo_server_main_t *esm = &echo_server_main;
   vnet_listen_args_t _a, *a = &_a;
   clib_memset (a, 0, sizeof (*a));
   a->app_index = esm->app_index;
   a->uri = esm->server_uri;
-  return vnet_bind_uri (a);
+  rv = vnet_bind_uri (a);
+  esm->listener_handle = a->handle;
+  return rv;
 }
 
 static int
index ae5d4db..be1111f 100644 (file)
@@ -131,7 +131,6 @@ typedef enum session_flags_
 {
   SESSION_F_RX_EVT = 1,
   SESSION_F_PROXY = (1 << 1),
-  SESSION_F_QUIC_STREAM = (1 << 2),
 } session_flags_t;
 
 typedef struct session_