diff options
author | Florin Coras <fcoras@cisco.com> | 2023-02-28 22:32:31 -0800 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2023-03-01 19:27:47 +0000 |
commit | 06defbc5de0d36f5d2a1d686d5d7d24c7c8476cd (patch) | |
tree | faa66fd02010214a2ad8fb4b1447f70d868ccfd0 /src | |
parent | c2a1417c5af9f29a0f267e49cfd164aa3085842c (diff) |
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 <fcoras@cisco.com>
Change-Id: I2994bead9494f0fbb85dd32767cecc1cf69ff6eb
Diffstat (limited to 'src')
-rw-r--r-- | src/vcl/ldp.c | 14 |
1 files changed, 7 insertions, 7 deletions
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)) { |