vcl: fix nonblocking accept with >1 event in the queue
We discard unwanted events until we get an ACCEPTED.
But if we are non-blocking we need to check the queue
length every time and EAGAIN if empty before waiting.
Type: fix
@@ -1464,11 +1464,11 @@ vppcom_session_accept (uint32_t listen_session_handle, vppcom_endpt_t * ep,
is_nonblocking = VCL_SESS_ATTR_TEST (listen_session->attr,
VCL_SESS_ATTR_NONBLOCK);
+ while (1)
+ {
if (svm_msg_q_is_empty (wrk->app_event_queue) && is_nonblocking)
return VPPCOM_EAGAIN;
- while (1)
- {
if (svm_msg_q_sub (wrk->app_event_queue, &msg, SVM_Q_WAIT, 0))
return VPPCOM_EAGAIN;
