From 53a16187fd3dcfe9a41ccc218469c8b3ea1040e0 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 29 Jul 2021 16:19:24 +0200 Subject: [PATCH] MINOR: poll/epoll: move detection of RDHUP support earlier Let's move the detection of support for RDHUP earlier and out of the FD update chain, as it complicates its simplification. --- src/ev_epoll.c | 6 +++--- src/ev_poll.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ev_epoll.c b/src/ev_epoll.c index 330c38c44..8810b7785 100644 --- a/src/ev_epoll.c +++ b/src/ev_epoll.c @@ -222,6 +222,9 @@ static void _do_poll(struct poller *p, int exp, int wake) e = epoll_events[count].events; fd = epoll_events[count].data.fd; + if ((e & EPOLLRDHUP) && !(cur_poller.flags & HAP_POLL_F_RDHUP)) + _HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP); + #ifdef DEBUG_FD _HA_ATOMIC_INC(&fdtab[fd].event_count); #endif @@ -245,9 +248,6 @@ static void _do_poll(struct poller *p, int exp, int wake) ((e & EPOLLHUP) ? FD_EV_SHUT_RW : 0) | ((e & EPOLLERR) ? FD_EV_ERR_RW : 0); - if ((e & EPOLLRDHUP) && !(cur_poller.flags & HAP_POLL_F_RDHUP)) - _HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP); - fd_update_events(fd, n); } /* the caller will take care of cached events */ diff --git a/src/ev_poll.c b/src/ev_poll.c index c30aadbe1..6bd0cf473 100644 --- a/src/ev_poll.c +++ b/src/ev_poll.c @@ -218,6 +218,9 @@ static void _do_poll(struct poller *p, int exp, int wake) int e = poll_events[count].revents; fd = poll_events[count].fd; + if ((e & POLLRDHUP) && !(cur_poller.flags & HAP_POLL_F_RDHUP)) + _HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP); + #ifdef DEBUG_FD _HA_ATOMIC_INC(&fdtab[fd].event_count); #endif @@ -245,9 +248,6 @@ static void _do_poll(struct poller *p, int exp, int wake) ((e & POLLHUP) ? FD_EV_SHUT_RW : 0) | ((e & POLLERR) ? FD_EV_ERR_RW : 0); - if ((e & POLLRDHUP) && !(cur_poller.flags & HAP_POLL_F_RDHUP)) - _HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP); - fd_update_events(fd, n); }