X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvcl%2Fvppcom.c;h=5423bb62f9ecb4c6c8c0c7a47a7086d072165fe9;hb=539663c401b087e4576e41af35144e73e1907c9d;hp=16b467f5a36f3692525f08a50511286e9c4b7b1a;hpb=0e88e851e058f4fb7cc690dbbdb19216ab360d1c;p=vpp.git diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index 16b467f5a36..5423bb62f9e 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include @@ -2422,6 +2421,9 @@ vcl_epoll_wait_handle_mq (vcl_worker_t * wrk, svm_msg_q_t * mq, session_event_t *e; int i; + if (vec_len (wrk->mq_msg_vector) && svm_msg_q_is_empty (mq)) + goto handle_dequeued; + svm_msg_q_lock (mq); if (svm_msg_q_is_empty (mq)) { @@ -2446,6 +2448,7 @@ vcl_epoll_wait_handle_mq (vcl_worker_t * wrk, svm_msg_q_t * mq, vcl_mq_dequeue_batch (wrk, mq); svm_msg_q_unlock (mq); +handle_dequeued: for (i = 0; i < vec_len (wrk->mq_msg_vector); i++) { msg = vec_elt_at_index (wrk->mq_msg_vector, i); @@ -2458,7 +2461,6 @@ vcl_epoll_wait_handle_mq (vcl_worker_t * wrk, svm_msg_q_t * mq, break; } } - vec_delete (wrk->mq_msg_vector, i, 0); return *num_ev;