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
This commit is contained in:

committed by
Dave Wallace

parent
c2a1417c5a
commit
06defbc5de
@ -331,16 +331,16 @@ close (int fd)
|
|||||||
epfd = vls_attr (vlsh, VPPCOM_ATTR_GET_LIBC_EPFD, 0, 0);
|
epfd = vls_attr (vlsh, VPPCOM_ATTR_GET_LIBC_EPFD, 0, 0);
|
||||||
if (epfd > 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);
|
LDBG (0, "fd %d: calling libc_close: epfd %u", fd, epfd);
|
||||||
|
|
||||||
rv = libc_close (epfd);
|
libc_close (epfd);
|
||||||
if (rv < 0)
|
ldpw->mq_epfd_added = 0;
|
||||||
{
|
|
||||||
u32 size = sizeof (epfd);
|
|
||||||
epfd = 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))
|
else if (PREDICT_FALSE (epfd < 0))
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user