From bf7ce2cd3c4e5561f7cc70a49e6da4fab557b873 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 6 Mar 2019 14:44:42 -0800 Subject: tls: fixes and improvements - disconnect sessions through session layer apis instead of directly notifying the app worker. - improve cli - increase fifo sizes for tls app Change-Id: I8a7d2865b3b00724e2a9da29fa4a906ea867da9b Signed-off-by: Florin Coras --- src/vnet/session/application.h | 2 ++ src/vnet/session/application_worker.c | 16 ++++++++++++++++ src/vnet/session/session.c | 8 ++------ src/vnet/session/session_node.c | 4 +--- 4 files changed, 21 insertions(+), 9 deletions(-) (limited to 'src/vnet/session') diff --git a/src/vnet/session/application.h b/src/vnet/session/application.h index ebb3cf57a71..3e1590ecb9f 100644 --- a/src/vnet/session/application.h +++ b/src/vnet/session/application.h @@ -222,6 +222,8 @@ int app_worker_accept_notify (app_worker_t * app_wrk, session_t * s); int app_worker_init_connected (app_worker_t * app_wrk, session_t * s); int app_worker_connect_notify (app_worker_t * app_wrk, session_t * s, u32 opaque); +int app_worker_close_notify (app_worker_t * app_wrk, session_t * s); +int app_worker_builtin_rx (app_worker_t * app_wrk, session_t * s); segment_manager_t *app_worker_get_listen_segment_manager (app_worker_t *, session_t *); segment_manager_t *app_worker_get_connect_segment_manager (app_worker_t *); diff --git a/src/vnet/session/application_worker.c b/src/vnet/session/application_worker.c index 85a6fede429..6b294ecf3fb 100644 --- a/src/vnet/session/application_worker.c +++ b/src/vnet/session/application_worker.c @@ -321,6 +321,22 @@ app_worker_connect_notify (app_worker_t * app_wrk, session_t * s, u32 opaque) s, s == 0 /* is_fail */ ); } +int +app_worker_close_notify (app_worker_t * app_wrk, session_t * s) +{ + application_t *app = application_get (app_wrk->app_index); + app->cb_fns.session_disconnect_callback (s); + return 0; +} + +int +app_worker_builtin_rx (app_worker_t * app_wrk, session_t * s) +{ + application_t *app = application_get (app_wrk->app_index); + app->cb_fns.builtin_app_rx_callback (s); + return 0; +} + int app_worker_own_session (app_worker_t * app_wrk, session_t * s) { diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 0a294dc6be1..c9eea1d2aad 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -715,18 +715,14 @@ void session_transport_closing_notify (transport_connection_t * tc) { app_worker_t *app_wrk; - application_t *app; session_t *s; s = session_get (tc->s_index, tc->thread_index); if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING) return; s->session_state = SESSION_STATE_TRANSPORT_CLOSING; - app_wrk = app_worker_get_if_valid (s->app_wrk_index); - if (!app_wrk) - return; - app = application_get (app_wrk->app_index); - app->cb_fns.session_disconnect_callback (s); + app_wrk = app_worker_get (s->app_wrk_index); + app_worker_close_notify (app_wrk, s); } /** diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index a7ff2144533..81679477472 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -856,7 +856,6 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, f64 now = vlib_time_now (vm); int n_tx_packets = 0, i, rv; app_worker_t *app_wrk; - application_t *app; svm_msg_q_t *mq; void (*fp) (void *); @@ -973,8 +972,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, continue; svm_fifo_unset_event (s->rx_fifo); app_wrk = app_worker_get (s->app_wrk_index); - app = application_get (app_wrk->app_index); - app->cb_fns.builtin_app_rx_callback (s); + app_worker_builtin_rx (app_wrk, s); break; case SESSION_IO_EVT_BUILTIN_TX: s = session_get_from_handle_if_valid (e->session_handle); -- cgit 1.2.3-korg