From 41ac8ee88f992fe845aed259557eaa7ec05f0ee0 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Fri, 24 May 2024 19:53:55 +0000 Subject: vapi: only wait if queue is empty Type: fix Fixes: 4b9935cd54 In vapi_wait(), check that the queue is empty before waiting. The condvar is only signaled on addition of the first message. pthread_cond_wait() will block approximately forever if there are already messages in the queue. Change-Id: Ic52befe443509f3c53aa9a872ba62bb05aaac25e Signed-off-by: Matthew Smith --- src/vpp-api/vapi/vapi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vpp-api/vapi/vapi.c b/src/vpp-api/vapi/vapi.c index 61801fc3726..c818ab0bbec 100644 --- a/src/vpp-api/vapi/vapi.c +++ b/src/vpp-api/vapi/vapi.c @@ -1627,7 +1627,8 @@ vapi_wait (vapi_ctx_t ctx) return VAPI_ENOTSUP; svm_queue_lock (ctx->vl_input_queue); - svm_queue_wait (ctx->vl_input_queue); + if (ctx->vl_input_queue->cursize == 0) + svm_queue_wait (ctx->vl_input_queue); svm_queue_unlock (ctx->vl_input_queue); return VAPI_OK; -- cgit