diff options
Diffstat (limited to 'src/vnet/session')
-rw-r--r-- | src/vnet/session/application.h | 1 | ||||
-rw-r--r-- | src/vnet/session/application_worker.c | 13 | ||||
-rw-r--r-- | src/vnet/session/session.c | 7 | ||||
-rwxr-xr-x | src/vnet/session/session_cli.c | 3 | ||||
-rw-r--r-- | src/vnet/session/session_node.c | 5 |
5 files changed, 16 insertions, 13 deletions
diff --git a/src/vnet/session/application.h b/src/vnet/session/application.h index 3d601cecfc9..0cf97a75742 100644 --- a/src/vnet/session/application.h +++ b/src/vnet/session/application.h @@ -225,6 +225,7 @@ 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_reset_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 *); diff --git a/src/vnet/session/application_worker.c b/src/vnet/session/application_worker.c index 08b42f38f16..6f504dafa43 100644 --- a/src/vnet/session/application_worker.c +++ b/src/vnet/session/application_worker.c @@ -330,6 +330,14 @@ app_worker_close_notify (app_worker_t * app_wrk, session_t * s) } int +app_worker_reset_notify (app_worker_t * app_wrk, session_t * s) +{ + application_t *app = application_get (app_wrk->app_index); + app->cb_fns.session_reset_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); @@ -553,10 +561,7 @@ app_send_io_evt_rx (app_worker_t * app_wrk, session_t * s, u8 lock) } if (app_worker_application_is_builtin (app_wrk)) - { - application_t *app = application_get (app_wrk->app_index); - return app->cb_fns.builtin_app_rx_callback (s); - } + return app_worker_builtin_rx (app_wrk, s); if (svm_fifo_has_event (s->rx_fifo)) return 0; diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 7769f1faace..f637d625616 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -825,17 +825,16 @@ session_transport_closed_notify (transport_connection_t * tc) void session_transport_reset_notify (transport_connection_t * tc) { - session_t *s; app_worker_t *app_wrk; - application_t *app; + session_t *s; + s = session_get (tc->s_index, tc->thread_index); svm_fifo_dequeue_drop_all (s->tx_fifo); if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING) return; s->session_state = SESSION_STATE_TRANSPORT_CLOSING; app_wrk = app_worker_get (s->app_wrk_index); - app = application_get (app_wrk->app_index); - app->cb_fns.session_reset_callback (s); + app_worker_reset_notify (app_wrk, s); } int diff --git a/src/vnet/session/session_cli.c b/src/vnet/session/session_cli.c index d8e504e5fb3..5179322049d 100755 --- a/src/vnet/session/session_cli.c +++ b/src/vnet/session/session_cli.c @@ -362,8 +362,7 @@ static int clear_session (session_t * s) { app_worker_t *server_wrk = app_worker_get (s->app_wrk_index); - application_t *server = application_get (server_wrk->app_index); - server->cb_fns.session_disconnect_callback (s); + app_worker_close_notify (server_wrk, s); return 0; } diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index 81679477472..2eac5152e16 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -88,8 +88,7 @@ session_mq_accepted_reply_handler (void *data) /* Closed while waiting for app to reply. Resend disconnect */ if (old_state >= SESSION_STATE_TRANSPORT_CLOSING) { - application_t *app = application_get (app_wrk->app_index); - app->cb_fns.session_disconnect_callback (s); + app_worker_close_notify (app_wrk, s); s->session_state = old_state; return; } @@ -289,7 +288,7 @@ session_mq_worker_update_handler (void *data) app_worker_lock_and_send_event (app_wrk, s, SESSION_IO_EVT_RX); if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING) - app->cb_fns.session_disconnect_callback (s); + app_worker_close_notify (app_wrk, s); } vlib_node_registration_t session_queue_node; |