ho_ctx = quic_ctx_half_open_get (ho_ctx_idx);
if (is_fail)
{
- int (*cb_fn) (u32, u32, session_t *, u8), rv = 0;
- u32 wrk_index, api_context;
+ u32 api_context;
+ int rv = 0;
- wrk_index = ho_ctx->c_quic_ctx_id.parent_app_wrk_idx;
app_wrk =
app_worker_get_if_valid (ho_ctx->c_quic_ctx_id.parent_app_wrk_idx);
if (app_wrk)
{
api_context = ho_ctx->c_s_index;
- app = application_get (app_wrk->app_index);
- cb_fn = app->cb_fns.session_connected_callback;
- rv = cb_fn (wrk_index, api_context, 0, 1 /* failed */ );
+ app_worker_connect_notify (app_wrk, 0, api_context);
}
quic_ctx_half_open_reader_unlock ();
quic_ctx_half_open_free (ho_ctx_idx);
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 *);
return 0;
}
+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)
{
}
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;
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
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;
}
/* 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;
}
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;
if (is_fail)
{
- int (*cb_fn) (u32, u32, session_t *, u8), rv = 0;
- u32 wrk_index, api_context;
app_worker_t *app_wrk;
- application_t *app;
+ u32 api_context;
+ int rv = 0;
- wrk_index = ho_ctx->parent_app_wrk_index;
app_wrk = app_worker_get_if_valid (ho_ctx->parent_app_wrk_index);
if (app_wrk)
{
api_context = ho_ctx->c_s_index;
- app = application_get (app_wrk->app_index);
- cb_fn = app->cb_fns.session_connected_callback;
- rv = cb_fn (wrk_index, api_context, 0, 1 /* failed */ );
+ app_worker_connect_notify (app_wrk, 0, api_context);
}
tls_ctx_half_open_reader_unlock ();
tls_ctx_half_open_free (ho_ctx_index);