]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: stream_interface: don't return when the fd is already set
authorWilly Tarreau <w@1wt.eu>
Sat, 15 Dec 2012 09:12:39 +0000 (10:12 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 15 Dec 2012 09:12:39 +0000 (10:12 +0100)
Back in the days where polling was made with select() where all FDs
were checked at once, stream_int_chk_snd_conn() used to check whether
the file descriptor it was passed was ready or not, so that it did
not perform the work for nothing.

Right now FDs are checked just before calling the I/O handler so this
test never matches at best, or may return false information at worst.

Since conn_fd_handler() always clears the flags upon exit, it looks
like a missed event cannot happen right now. Still, better remove
this outdated check than wait for it to cause issues.

src/stream_interface.c

index 32cd21119a229e6b60e08e19384fc5479f105d1d..5f6d85d65e591c6c4965c6d16ab75e040de34b84 100644 (file)
@@ -795,8 +795,7 @@ static void stream_int_chk_snd_conn(struct stream_interface *si)
                return;
 
        if (!ob->pipe &&                          /* spliced data wants to be forwarded ASAP */
-           (!(si->flags & SI_FL_WAIT_DATA) ||    /* not waiting for data */
-            (fdtab[si->conn->t.sock.fd].ev & FD_POLL_OUT)))   /* we'll be called anyway */
+           !(si->flags & SI_FL_WAIT_DATA))       /* not waiting for data */
                return;
 
        if (!(si->conn->flags & (CO_FL_HANDSHAKE|CO_FL_WAIT_L4_CONN|CO_FL_WAIT_L6_CONN))) {