app_worker_t *app_wrk;
application_t *app;
s = session_get (tc->s_index, tc->thread_index);
- s->session_state = SESSION_STATE_CLOSED;
+ svm_fifo_dequeue_drop_all (s->server_tx_fifo);
app_wrk = app_worker_get (s->app_wrk_index);
app = application_get (app_wrk->app_index);
app->cb_fns.session_reset_callback (s);
* held, just append a new event to pending disconnects vector. */
if (vlib_thread_is_main_w_barrier () || thread_index == s->thread_index)
{
- wrk = session_manager_get_worker (thread_index);
+ wrk = session_manager_get_worker (s->thread_index);
vec_add2 (wrk->pending_disconnects, evt, 1);
clib_memset (evt, 0, sizeof (*evt));
evt->session_handle = session_handle (s);
if (num_threads < 1)
return clib_error_return (0, "n_thread_stacks not set");
- /* configure per-thread ** vectors */
+ /* Allocate cache line aligned worker contexts */
vec_validate_aligned (smm->wrk, num_threads - 1, CLIB_CACHE_LINE_BYTES);
for (i = 0; i < TRANSPORT_N_PROTO; i++)
for (i = 0; i < num_threads; i++)
{
wrk = &smm->wrk[i];
- vec_validate (wrk->free_event_vector, 0);
+ vec_validate (wrk->free_event_vector, 128);
_vec_len (wrk->free_event_vector) = 0;
- vec_validate (wrk->pending_event_vector, 0);
+ vec_validate (wrk->pending_event_vector, 128);
_vec_len (wrk->pending_event_vector) = 0;
- vec_validate (wrk->pending_disconnects, 0);
+ vec_validate (wrk->pending_disconnects, 128);
_vec_len (wrk->pending_disconnects) = 0;
+ vec_validate (wrk->postponed_event_vector, 128);
+ _vec_len (wrk->postponed_event_vector) = 0;
wrk->last_vlib_time = vlib_time_now (vlib_mains[i]);
+ wrk->dispatch_period = 500e-6;
if (num_threads > 1)
clib_rwlock_init (&smm->wrk[i].peekers_rw_locks);