aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/application.h1
-rw-r--r--src/vnet/session/application_worker.c13
-rw-r--r--src/vnet/session/session.c7
-rwxr-xr-xsrc/vnet/session/session_cli.c3
-rw-r--r--src/vnet/session/session_node.c5
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;