MEDIUM: connection: remove the FD_POLL_* flags only once

It's inappropriate to remove FD_POLL_IN and FD_POLL_OUT in the IO callback
handlers, first because they shouldn't care about this, and second because
it will make it harder to chain multiple callers.

So let's flush these flags only once for all in the connection handler.
Right now, the HUP and ERR flags are still flushed in each IO handler to
avoid multiple calls. This will probably have to be fixed later.
This commit is contained in:
Willy Tarreau 2012-07-23 12:14:26 +02:00 committed by Willy Tarreau
parent 8018471f44
commit 61ace1b2ca
2 changed files with 2 additions and 2 deletions

View File

@ -42,5 +42,7 @@ int conn_fd_handler(int fd)
if (!conn->data->write(fd))
ret |= FD_WAIT_WRITE;
/* remove the events before leaving */
fdtab[fd].ev &= ~(FD_POLL_IN | FD_POLL_OUT | FD_POLL_HUP | FD_POLL_ERR);
return ret;
}

View File

@ -484,7 +484,6 @@ static int sock_raw_read(int fd)
if (b->flags & BF_READ_ACTIVITY)
b->flags &= ~BF_READ_DONTWAIT;
fdtab[fd].ev &= ~FD_POLL_IN;
return retval;
out_shutdown_r:
@ -741,7 +740,6 @@ static int sock_raw_write(int fd)
task_wakeup(si->owner, TASK_WOKEN_IO);
}
fdtab[fd].ev &= ~FD_POLL_OUT;
return retval;
out_error: