]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: kqueue: only set FD_POLL_IN when there are pending data
authorWilly Tarreau <w@1wt.eu>
Mon, 13 Mar 2017 19:49:56 +0000 (20:49 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 21 Mar 2017 15:35:17 +0000 (16:35 +0100)
Let's avoid setting FD_POLL_IN when there's no pending data. It will
save a useless recv() syscall on pure closes.

src/ev_kqueue.c

index 6f41c731f435b904016fc83628e8a31eb3772838..f1c0b8d0005662e3e5135dd994cb31f04b592577 100644 (file)
@@ -125,7 +125,8 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
                fdtab[fd].ev &= FD_POLL_STICKY;
 
                if (kev[count].filter ==  EVFILT_READ) {
-                       fdtab[fd].ev |= FD_POLL_IN;
+                       if (kev[count].data)
+                               fdtab[fd].ev |= FD_POLL_IN;
                        if (kev[count].flags & EV_EOF)
                                fdtab[fd].ev |= FD_POLL_HUP;
                }