mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-26 11:20:31 -05:00
Now that the response may be fragmented, we may receive early notifications
of aborts in return of poll(), as indicated below, which currently cause
an early error detection :
21:11:21.036600 epoll_wait(3, {{EPOLLIN, {u32=7, u64=7}}}, 8, 993) = 1
21:11:21.054361 gettimeofday({1268770281, 54467}, NULL) = 0
21:11:21.054540 recv(7, "H"..., 8030, 0) = 1
21:11:21.054694 recv(7, 0x967e759, 8029, 0) = -1 EAGAIN (Resource temporarily unavailable)
21:11:21.054843 epoll_wait(3, {{EPOLLIN|EPOLLERR|EPOLLHUP, {u32=7, u64=7}}}, 8, 975) = 1
21:11:21.060274 gettimeofday({1268770281, 60386}, NULL) = 0
21:11:21.060454 close(7) = 0
Just as in stream_sock, we must not believe poll() without attempting to receive,
which fixes the issue :
21:11:59.402207 recv(7, "H"..., 8030, 0) = 1
21:11:59.402362 recv(7, 0x8b5c759, 8029, 0) = -1 EAGAIN (Resource temporarily unavailable)
21:11:59.402511 epoll_wait(3, {{EPOLLIN|EPOLLERR|EPOLLHUP, {u32=7, u64=7}}}, 8, 974) = 1
21:11:59.407242 gettimeofday({1268770319, 407353}, NULL) = 0
21:11:59.407425 recv(7, "TTP/1.0 200 OK\r\n"..., 8029, 0) = 16
21:11:59.407606 recv(7, 0x8b5c769, 8013, 0) = -1 ECONNRESET (Connection reset by peer)
21:11:59.407753 shutdown(7, 2 /* send and receive */) = -1 ENOTCONN (Transport endpoint is not connected)
|
||
|---|---|---|
| .. | ||
| acl.c | ||
| appsession.c | ||
| auth.c | ||
| backend.c | ||
| base64.c | ||
| buffers.c | ||
| cfgparse.c | ||
| checks.c | ||
| client.c | ||
| cttproxy.c | ||
| dumpstats.c | ||
| ev_epoll.c | ||
| ev_kqueue.c | ||
| ev_poll.c | ||
| ev_select.c | ||
| ev_sepoll.c | ||
| fd.c | ||
| freq_ctr.c | ||
| haproxy.c | ||
| hdr_idx.c | ||
| lb_chash.c | ||
| lb_fwlc.c | ||
| lb_fwrr.c | ||
| lb_map.c | ||
| log.c | ||
| memory.c | ||
| pattern.c | ||
| pipe.c | ||
| proto_http.c | ||
| proto_tcp.c | ||
| proto_uxst.c | ||
| protocols.c | ||
| proxy.c | ||
| queue.c | ||
| rbtree.c | ||
| regex.c | ||
| server.c | ||
| session.c | ||
| sessionhash.c | ||
| signal.c | ||
| standard.c | ||
| stick_table.c | ||
| stream_interface.c | ||
| stream_sock.c | ||
| task.c | ||
| time.c | ||
| uri_auth.c | ||