From: Florin Coras Date: Wed, 1 Mar 2023 06:32:31 +0000 (-0800) Subject: vcl: close libc epfd on vls epfd close X-Git-Tag: v23.10-rc0~205 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=06defbc5de0d36f5d2a1d686d5d7d24c7c8476cd;p=vpp.git vcl: close libc epfd on vls epfd close Nginx recreates epfds. Make sure ldp tracks the event and recreates the libc epfd or eventfd flavor of epoll pwait will not work. Type: fix Signed-off-by: Florin Coras Change-Id: I2994bead9494f0fbb85dd32767cecc1cf69ff6eb --- diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c index 0bb81344662..3d4c01c7833 100644 --- a/src/vcl/ldp.c +++ b/src/vcl/ldp.c @@ -331,16 +331,16 @@ close (int fd) epfd = vls_attr (vlsh, VPPCOM_ATTR_GET_LIBC_EPFD, 0, 0); if (epfd > 0) { + ldp_worker_ctx_t *ldpw = ldp_worker_get_current (); + u32 size = sizeof (epfd); + LDBG (0, "fd %d: calling libc_close: epfd %u", fd, epfd); - rv = libc_close (epfd); - if (rv < 0) - { - u32 size = sizeof (epfd); - epfd = 0; + libc_close (epfd); + ldpw->mq_epfd_added = 0; - (void) vls_attr (vlsh, VPPCOM_ATTR_SET_LIBC_EPFD, &epfd, &size); - } + epfd = 0; + (void) vls_attr (vlsh, VPPCOM_ATTR_SET_LIBC_EPFD, &epfd, &size); } else if (PREDICT_FALSE (epfd < 0)) {