vcm->main_cpu = pthread_self ();
vcm->main_pid = getpid ();
vcm->app_name = format (0, "%s", app_name);
- fifo_segment_main_init (&vcm->segment_main, vcl_cfg->segment_baseva,
- 20 /* timeout in secs */ );
+ fifo_segment_main_init (&vcm->segment_main, (uword) ~0,
+ 20 /* timeout in secs */);
pool_alloc (vcm->workers, vcl_cfg->max_workers);
clib_spinlock_init (&vcm->workers_lock);
clib_rwlock_init (&vcm->segment_table_lock);
if (!listen_session || (listen_session->flags & VCL_SESSION_F_IS_VEP))
return VPPCOM_EBADFD;
- if (q_len == 0 || q_len == ~0)
- q_len = vcm->cfg.listen_queue_size;
-
listen_vpp_handle = listen_session->vpp_handle;
if (listen_session->session_state == VCL_STATE_LISTEN)
{
break;
session_events = s->vep.ev.events;
sid = s->session_index;
- if (!(EPOLLIN & session_events))
+ if (!(EPOLLIN & session_events) ||
+ (s->vep.lt_next != VCL_INVALID_SESSION_INDEX))
break;
add_event = 1;
events[*num_ev].events = EPOLLIN;
}
vec_reset_length (wrk->unhandled_evts_vector);
}
+
+ if (PREDICT_FALSE (wrk->ep_lt_current != VCL_INVALID_SESSION_INDEX))
+ vcl_epoll_wait_handle_lt (wrk, events, maxevents, &n_evts);
+
/* Request to only drain unhandled */
if ((int) wait_for_time == -2)
return n_evts;
n_evts = vppcom_epoll_wait_condvar (wrk, events, maxevents, n_evts,
wait_for_time);
- if (PREDICT_FALSE (wrk->ep_lt_current != VCL_INVALID_SESSION_INDEX))
- vcl_epoll_wait_handle_lt (wrk, events, maxevents, &n_evts);
-
return n_evts;
}