haproxy/src
Willy Tarreau 9484179f32 BUG/MINOR: unix: fix connect's polling in case no data are scheduled
There's a test after a successful synchronous connect() consisting
in waking the data layer up asap if there's no more handshake.
Unfortunately this test is run before setting the CO_FL_SEND_PROXY
flag and before the transport layer adds its own flags, so it can
indicate a willingness to send data while it's not the case and it
will have to be handled later.

This has no visible effect except a useless call to a function in
case of health checks making use of the proxy protocol for example.

Additionally a corner case where EALREADY was returned and considered
equivalent to EISCONN was fixed so that it's considered equivalent to
EINPROGRESS given that the connection is not complete yet. But this
code should never return on the first call anyway so it's mostly a
cleanup.

This fix should be backported to 1.7 and 1.6 at least to avoid
headaches during some debugging.
2017-01-25 18:48:14 +01:00
..
51d.c CLEANUP: 51d: move global settings out of the global section 2016-12-21 21:30:54 +01:00
acl.c CLEANUP: sample: report "converter" instead of "conv method" in error messages 2016-11-25 07:36:22 +01:00
applet.c BUG/MAJOR: Fix how the list of entities waiting for a buffer is handled 2016-12-12 19:11:04 +01:00
arg.c MINOR: sample: Moves ARGS underlying type from 32 to 64 bits. 2016-03-15 22:11:52 +01:00
auth.c CLEANUP: auth: use the build options list to report its support 2016-12-21 21:30:54 +01:00
backend.c MEDIUM: server: split the address and the port into two different fields 2017-01-06 19:29:33 +01:00
base64.c [MINOR] add encode/decode function for 30-bit integers from/to base64 2010-10-30 19:04:33 +02:00
buffer.c BUG/MAJOR: Fix how the list of entities waiting for a buffer is handled 2016-12-12 19:11:04 +01:00
cfgparse.c OPTIM/MINOR: config: Optimize fullconn automatic computation loading configuration 2017-01-12 17:36:09 +01:00
channel.c BUG/MEDIUM: channel: bad unlikely macro 2016-11-14 15:23:17 +01:00
checks.c MEDIUM: server: split the address and the port into two different fields 2017-01-06 19:29:33 +01:00
chunk.c CLEANUP: fixed some usages of realloc leading to memory leak 2016-06-29 10:45:18 +02:00
cli.c CLEANUP: connection: remove all direct references to raw_sock and ssl_sock 2016-12-22 23:26:38 +01:00
compression.c MINOR: compression: fix -vv output without zlib/slz 2017-01-11 16:11:11 +01:00
connection.c MINOR: connection: add sample fetch "fc_rcvd_proxy" 2017-01-06 11:59:17 +01:00
da.c CLEANUP: da: move global settings out of the global section 2016-12-21 21:30:54 +01:00
dns.c MINOR: appctx/cli: remove the "dns" entry from the appctx union 2016-12-16 19:40:14 +01:00
ev_epoll.c CLEANUP: poll: move the conditions for waiting out of the poll functions 2015-04-13 20:47:51 +02:00
ev_kqueue.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
ev_poll.c BUILD: poll: remove unused hap_fd_isset() which causes a warning with clang 2016-08-10 21:23:48 +02:00
ev_select.c CLEANUP: poll: move the conditions for waiting out of the poll functions 2015-04-13 20:47:51 +02:00
fd.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
filters.c BUG/MAJOR: channel: Fix the definition order of channel analyzers 2017-01-05 17:58:22 +01:00
flt_http_comp.c OPTIM: http: move all http character classs tables into a single one 2016-11-05 15:58:08 +01:00
flt_spoe.c MEDIUM: spoe: don't create a dummy listener for outgoing connections 2016-12-22 23:26:37 +01:00
flt_trace.c MINOR: filters: Add check_timeouts callback to handle timers expiration on streams 2016-11-21 15:29:58 +01:00
freq_ctr.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
frontend.c MINOR: proxy: Add fe_name/be_name fetchers next to existing fe_id/be_id 2016-12-12 15:10:43 +01:00
haproxy-systemd-wrapper.c BUG/MEDIUM: systemd-wrapper: return correct exit codes 2016-11-03 20:34:20 +01:00
haproxy.c BUG/MINOR: systemd: potential zombie processes 2016-12-23 16:21:48 +01:00
hash.c MINOR: hash: add new function hash_crc32 2015-01-20 19:48:05 +01:00
hdr_idx.c OPTIM/MINOR: move the hdr_idx pools out of the proxy struct 2011-10-24 18:15:04 +02:00
hlua.c MINOR: Use "500 Internal Server Error" for 500 error/status code message. 2017-01-11 12:44:40 +01:00
hlua_fcn.c BUILD: lua: build failed on FreeBSD. 2016-12-23 18:03:43 +01:00
i386-linux-vsys.c MEDIUM: listener: add support for linux's accept4() syscall 2012-10-08 20:11:03 +02:00
lb_chash.c MEDIUM: server: Implement bounded-load hash algorithm 2016-10-25 20:21:32 +02:00
lb_fas.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwlc.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwrr.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_map.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00
listener.c MEDIUM: move listener->frontend to bind_conf->frontend 2016-12-22 23:26:38 +01:00
log.c CLEANUP: connection: remove all direct references to raw_sock and ssl_sock 2016-12-22 23:26:38 +01:00
lru.c MINOR: lru: new function to delete <nb> least recently used keys 2016-01-11 07:31:35 +01:00
mailers.c MEDIUM: Add parsing of mailers section 2015-02-03 00:24:16 +01:00
map.c CLEANUP: cli: remove assignments to st0 and st2 in keyword parsers 2016-11-24 16:59:28 +01:00
memory.c CLEANUP: memory: remove the now unused cli_parse_show_pools() function 2016-12-16 19:40:13 +01:00
namespace.c CLEANUP: namespaces: use the build options list to report it 2016-12-21 21:30:54 +01:00
pattern.c BUG/MINOR: pattern: Avoid memory leak on out-of-memory condition 2016-03-13 07:47:25 +01:00
payload.c CLEANUP: ssl: Remove goto after return dead code 2016-11-14 18:15:20 +01:00
peers.c MEDIUM: move listener->frontend to bind_conf->frontend 2016-12-22 23:26:38 +01:00
pipe.c BUILD/MINOR: silent a build warning in src/pipe.c (fcntl) 2011-10-24 17:09:22 +02:00
proto_http.c MINOR: proto_http.c 502 error txt typo. 2017-01-11 12:44:41 +01:00
proto_tcp.c BUG/MEDIUM: tcp: don't poll for write when connect() succeeds 2017-01-25 18:46:01 +01:00
proto_udp.c CLEANUP: fix inconsistency between fd->iocb, proto->accept and accept() 2016-04-14 11:18:22 +02:00
proto_uxst.c BUG/MINOR: unix: fix connect's polling in case no data are scheduled 2017-01-25 18:48:14 +01:00
protocol.c BUILD: protocol: fix some build errors on OpenBSD 2016-08-10 19:31:58 +02:00
proxy.c BUG/MINOR: stream: Fix how backend-specific analyzers are set on a stream 2017-01-13 11:38:27 +01:00
queue.c MINOR: proxy: add 'served' field to proxy, equal to total of all servers' 2016-10-25 20:21:32 +02:00
raw_sock.c CLEANUP: connection: unexport raw_sock and ssl_sock 2016-12-22 23:26:38 +01:00
rbtree.c [MINOR] imported the rbtree function from Linux kernel 2007-01-07 02:12:57 +01:00
regex.c MEDIUM: regex: pcre2 support 2016-12-28 12:51:51 +01:00
sample.c MINOR: samples: add xx-hash functions 2016-12-26 12:45:04 +01:00
server.c MINOR: cli: Add possiblity to change agent config via CLI/socket 2017-01-16 11:38:59 +01:00
session.c CLEANUP: connection: remove all direct references to raw_sock and ssl_sock 2016-12-22 23:26:38 +01:00
shctx.c MEDIUM: ssl: Add support for OpenSSL 1.1.0 2016-11-08 20:54:41 +01:00
signal.c MEDIUM: unblock signals on startup. 2016-04-20 10:53:12 +02:00
ssl_sock.c BUILD: ssl: kill a build warning introduced by BoringSSL compatibility 2017-01-19 17:56:20 +01:00
standard.c BUG/MEDIUM: tools: do not force an unresolved address to AF_INET:0.0.0.0 2017-01-11 12:44:33 +01:00
stats.c MEDIUM: server: split the address and the port into two different fields 2017-01-06 19:29:33 +01:00
stick_table.c BUG/MINOR: sample-fetches/stick-tables: bad type for the sample fetches sc*_get_gpt0 2017-01-05 16:04:05 +01:00
stream.c BUG/MAJOR: channel: Fix the definition order of channel analyzers 2017-01-05 17:58:22 +01:00
stream_interface.c BUG/MINOR: stream-int: automatically release SI_FL_WAIT_DATA on SHUTW_NOW 2016-12-14 16:48:16 +01:00
task.c MINOR: task: Rename run_queue and run_queue_cur counters 2016-12-12 19:10:54 +01:00
tcp_rules.c MINOR: tcp-rules: check that the listener exists before updating its counters 2016-12-22 23:26:37 +01:00
time.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
trace.c BUG/MEDIUM: trace.c: rdtsc() is defined in two files 2016-04-09 22:27:01 +02:00
uri_auth.c CLEANUP: uniformize last argument of malloc/calloc 2016-04-03 14:17:42 +02:00
vars.c BUG/MEDIUM: variables: some variable name can hide another ones 2016-12-12 14:34:56 +01:00
wurfl.c CLEANUP: wurfl: move global settings out of the global section 2016-12-21 21:30:54 +01:00
xxhash.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00