struct epoll_event e = { 0 };
int rv;
- e.data.u32 = ~0;
+ e.data.u32 = VCL_EP_SAPIFD_EVT;
rv = epoll_ctl (wrk->mqs_epfd, EPOLL_CTL_ADD, cs->fd, &e);
if (rv != EEXIST && rv < 0)
return -1;
struct epoll_event evt = {};
evt.events = EPOLLIN;
- evt.data.u32 = wrk->detached_pipefds[0];
+ evt.data.u32 = VCL_EP_PIPEFD_EVT;
if (epoll_ctl (wrk->mqs_epfd, EPOLL_CTL_ADD, wrk->detached_pipefds[0],
&evt) < 0)
{
#endif
#define VPPCOM_DEBUG vcm->debug
+#define VCL_EP_SAPIFD_EVT ((u32) ~0)
+#define VCL_EP_PIPEFD_EVT ((u32) (~0 - 1))
extern __thread uword __vcl_worker_index;
for (i = 0; i < n_mq_evts; i++)
{
- if (PREDICT_FALSE (wrk->mq_events[i].data.u32 == ~0))
+ if (PREDICT_FALSE (wrk->mq_events[i].data.u32 >= VCL_EP_PIPEFD_EVT))
{
+ if (wrk->mq_events[i].data.u32 == VCL_EP_PIPEFD_EVT)
+ {
+ vcl_api_retry_attach (wrk);
+ continue;
+ }
/* api socket was closed */
vcl_api_handle_disconnect (wrk);
continue;