Fix an issue in tls.c
[vpp.git] / src / vnet / tls / tls.c
index 0fdd68c..34de539 100644 (file)
@@ -262,7 +262,6 @@ tls_notify_app_connected (tls_ctx_t * ctx, u8 is_failed)
     goto failed;
 
   ctx->app_session_handle = session_handle (app_session);
-  ctx->c_s_index = app_session->session_index;
   app_session->session_state = SESSION_STATE_CONNECTING;
   if (cb_fn (ctx->parent_app_index, ctx->parent_app_api_context,
             app_session, 0 /* not failed */ ))
@@ -272,6 +271,9 @@ tls_notify_app_connected (tls_ctx_t * ctx, u8 is_failed)
       return -1;
     }
 
+  /* parent_app_api_context should not be overwitten before used,
+   * so defer setting c_s_index */
+  ctx->c_s_index = app_session->session_index;
   app_session->session_state = SESSION_STATE_READY;
   session_lookup_add_connection (&ctx->connection,
                                 session_handle (app_session));
@@ -390,7 +392,7 @@ tls_session_disconnect_callback (stream_session_t * tls_session)
   ctx = tls_ctx_get (tls_session->opaque);
   if (!tls_ctx_handshake_is_over (ctx))
     {
-      stream_session_disconnect (tls_session);
+      session_close (tls_session);
       return;
     }
   ctx->is_passive_close = 1;
@@ -568,7 +570,7 @@ tls_disconnect (u32 ctx_handle, u32 thread_index)
 
   ctx = tls_ctx_get (ctx_handle);
   tls_disconnect_transport (ctx);
-  stream_session_delete_notify (&ctx->connection);
+  session_transport_delete_notify (&ctx->connection);
   tls_ctx_free (ctx);
 }