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 <mgsmith@netgate.com>
This commit is contained in:
Matthew Smith 2024-05-24 19:53:55 +00:00 committed by Dave Wallace
parent ad005c2a8b
commit 41ac8ee88f

View File

@ -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;