mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
MINOR: fd: merge the read and write error bits into RW error
We always set them both, which makes sense since errors at the FD level indicate a terminal condition for the socket that cannot be recovered. Usually this is detected via a write error, but sometimes such an error may asynchronously be reported on the read side. Let's simplify this using only the write bit and calling it RW since it's used like this everywhere, and leave the R bit spare for future use.
This commit is contained in:
parent
a135ea63a6
commit
1ed3781e21
@ -314,8 +314,7 @@ static inline void fd_update_events(int fd, unsigned char evts)
|
||||
((evts & FD_EV_READY_R) ? FD_POLL_IN : 0) |
|
||||
((evts & FD_EV_READY_W) ? FD_POLL_OUT : 0) |
|
||||
((evts & FD_EV_SHUT_R) ? FD_POLL_HUP : 0) |
|
||||
((evts & FD_EV_ERR_R) ? FD_POLL_ERR : 0) |
|
||||
((evts & FD_EV_ERR_W) ? FD_POLL_ERR : 0);
|
||||
((evts & FD_EV_ERR_RW) ? FD_POLL_ERR : 0);
|
||||
|
||||
/* SHUTW reported while FD was active for writes is an error */
|
||||
if ((fdtab[fd].ev & FD_EV_ACTIVE_W) && (evts & FD_EV_SHUT_W))
|
||||
@ -327,11 +326,11 @@ static inline void fd_update_events(int fd, unsigned char evts)
|
||||
/* both sides stopped */
|
||||
must_stop = FD_POLL_IN | FD_POLL_OUT;
|
||||
}
|
||||
else if (unlikely(!fd_recv_active(fd) && (evts & (FD_EV_READY_R | FD_EV_SHUT_R | FD_EV_ERR_R)))) {
|
||||
else if (unlikely(!fd_recv_active(fd) && (evts & (FD_EV_READY_R | FD_EV_SHUT_R | FD_EV_ERR_RW)))) {
|
||||
/* only send remains */
|
||||
must_stop = FD_POLL_IN;
|
||||
}
|
||||
else if (unlikely(!fd_send_active(fd) && (evts & (FD_EV_READY_W | FD_EV_SHUT_W | FD_EV_ERR_W)))) {
|
||||
else if (unlikely(!fd_send_active(fd) && (evts & (FD_EV_READY_W | FD_EV_SHUT_W | FD_EV_ERR_RW)))) {
|
||||
/* only recv remains */
|
||||
must_stop = FD_POLL_OUT;
|
||||
}
|
||||
|
@ -57,12 +57,12 @@ enum {
|
||||
#define FD_EV_ACTIVE_R_BIT 0
|
||||
#define FD_EV_READY_R_BIT 1
|
||||
#define FD_EV_SHUT_R_BIT 2
|
||||
#define FD_EV_ERR_R_BIT 3
|
||||
/* unused: 3 */
|
||||
|
||||
#define FD_EV_ACTIVE_W_BIT 4
|
||||
#define FD_EV_READY_W_BIT 5
|
||||
#define FD_EV_SHUT_W_BIT 6
|
||||
#define FD_EV_ERR_W_BIT 7
|
||||
#define FD_EV_ERR_RW_BIT 7
|
||||
|
||||
/* and flag values */
|
||||
#define FD_EV_ACTIVE_R (1U << FD_EV_ACTIVE_R_BIT)
|
||||
@ -78,10 +78,10 @@ enum {
|
||||
#define FD_EV_SHUT_W (1U << FD_EV_SHUT_W_BIT)
|
||||
#define FD_EV_SHUT_RW (FD_EV_SHUT_R | FD_EV_SHUT_W)
|
||||
|
||||
/* note that when FD_EV_ERR is set, SHUT is also set */
|
||||
#define FD_EV_ERR_R (1U << FD_EV_ERR_R_BIT)
|
||||
#define FD_EV_ERR_W (1U << FD_EV_ERR_W_BIT)
|
||||
#define FD_EV_ERR_RW (FD_EV_ERR_R | FD_EV_ERR_W)
|
||||
/* note that when FD_EV_ERR is set, SHUT is also set. Also, ERR is for both
|
||||
* directions at once (write error, socket dead, etc).
|
||||
*/
|
||||
#define FD_EV_ERR_RW (1U << FD_EV_ERR_RW_BIT)
|
||||
|
||||
|
||||
/* This is the value used to mark a file descriptor as dead. This value is
|
||||
|
Loading…
x
Reference in New Issue
Block a user