mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-28 07:32:15 +00:00
77abb43ed1
There's currently a big ambiguity on our use of POLLHUP because we currently map POLLHUP and POLLRDHUP to FD_POLL_HUP. The first one indicates a close in *both* directions while the second one indicates a unidirectional close. Since we don't know from the resulting flag we always have to read when reported. Furthermore kqueue only reports unidirectional responses which are mapped to FD_POLL_HUP as well, and their write closes are mapped to a general error. We could add a new FD_POLL_RDHUP flag to improve the mapping, or switch only to the POLL* flags, but that further complicates the portability for operating systems like FreeBSD which do not have POLLRDHUP but have its semantics. Let's instead directly use the per-direction flag values we already have, and it will be a first step in the direction of finer states. Thus we introduce an ERR and a SHUT status for each direction, that the pollers will be able to compute and pass to fd_update_events(). It's worth noting that FD_EV_STATUS already sees the two new flags, but they are harmless since used only by fd_{recv,send}_state() which are never called. Thus in its current state this patch must be totally transparent. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |