haproxy/src
Christopher Faulet 7a3367cca0 BUG/MINOR: stream: Attach the read side on the response as soon as possible
A backend stream-interface attached to a reused connection remains in the state
SI_ST_CONN until some data are sent to validate the connection. But when the
url_param algorithm is used to balance connections, no data are sent while the
connection is not established. So it is a chicken and egg situation.

To solve the problem, if no error is detected and when the request channel is
waiting for the connect(), we mark the read side as attached on the response
channel as soon as possible and we wake the request channel up once. This
happens in 2 places. The first one is right after the connect(), when the
stream-interface is still in state SI_ST_CON, in the function
sess_update_st_con_tcp(). The second one is when an applet is used instead of a
real connection to a server, in the function sess_prepare_conn_req(). In fact,
it is done when the backend stream-interface is set to the state SI_ST_EST.

This patch must be backported to 1.9.
2019-05-10 11:47:00 +02:00
..
51d.c BUG/MINOR: 51d: Get the request channel to call CHECK_HTTP_MESSAGE_FIRST() 2019-04-19 15:53:23 +02:00
acl.c BUG/MINOR: acl: properly detect pattern type SMP_T_ADDR 2019-04-19 11:45:20 +02:00
action.c MINOR: stick-tables: Add peers process binding computing. 2019-05-07 06:54:07 +02:00
activity.c MINOR: activity: enable automatic profiling turn on/off 2019-04-25 17:26:46 +02:00
applet.c MEDIUM: appctx/debug: force a crash if an appctx spins over itself forever 2019-04-26 13:15:56 +02:00
arg.c MINOR: sample: Rework gRPC converter code. 2019-03-05 11:04:23 +01:00
auth.c MINOR: initcall: apply initcall to all register_build_opts() calls 2018-11-26 19:50:32 +01:00
backend.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
base64.c BUG/MINOR: base64: dec func ignores padding for output size checking 2019-01-14 19:32:15 +01:00
buffer.c MEDIUM: memory: use pool_destroy_all() to destroy all pools on deinit() 2018-11-26 19:50:32 +01:00
cache.c BUILD: cache: avoid a build warning with some compilers/linkers 2019-03-29 21:03:24 +01:00
cfgparse-global.c MINOR: threads: flatten the per-thread cpu-map 2019-05-03 09:46:45 +02:00
cfgparse-listen.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
cfgparse.c BUG/MEDIUM: stick-table: fix regression caused by a change in proxy struct 2019-05-07 14:56:59 +02:00
channel.c MINOR: channel: Add the function channel_add_input 2019-01-02 20:12:44 +01:00
checks.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
chunk.c MEDIUM: memory: use pool_destroy_all() to destroy all pools on deinit() 2018-11-26 19:50:32 +01:00
cli.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
compression.c MEDIUM: compression: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
connection.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
da.c MEDIUM: da: HTX mode support. 2019-04-26 17:06:32 +02:00
dns.c MINOR: action: new '(http-request|tcp-request content) do-resolve' action 2019-04-23 11:41:52 +02:00
ev_epoll.c MEDIUM: pollers: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
ev_kqueue.c MEDIUM: pollers: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
ev_poll.c MEDIUM: pollers: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
ev_select.c MEDIUM: pollers: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
fd.c MINOR: fd: Add a counter of used fds. 2019-04-18 19:19:59 +02:00
filters.c MINOR: filters/htx: Use stream flags instead of px mode to instanciate a filter 2019-04-12 22:06:53 +02:00
flt_http_comp.c MEDIUM: compression: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
flt_spoe.c BUG/MEDIUM: spoe: Be sure the sample is found before setting its context 2019-05-07 22:16:41 +02:00
flt_trace.c CLEANUP: h1: remove some occurrences of unneeded h1.h inclusions 2018-12-11 17:15:13 +01:00
freq_ctr.c BUG/MAJOR: threads/freq_ctr: use a memory barrier to detect changes 2017-10-31 18:01:18 +01:00
frontend.c MEDIUM: init: convert all trivial registration calls to initcalls 2018-11-26 19:50:32 +01:00
h1.c MEDIUM: h1: Add an option to sanitize connection headers during parsing 2019-04-12 22:06:53 +02:00
h2.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
haproxy.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
hash.c MINOR: hash: add new function hash_crc32c 2018-03-21 05:04:01 +01:00
hathreads.c MINOR: threads: Implement thread_cpus_enabled() for FreeBSD. 2019-04-11 00:09:22 +02:00
hdr_idx.c CLEANUP: pools: rename all pool functions and pointers to remove this "2" 2017-11-24 17:49:53 +01:00
hlua.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
hlua_fcn.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
hpack-dec.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-enc.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-huff.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
hpack-tbl.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
http.c BUILD: do not specify "const" on functions returning structs or scalars 2019-04-15 21:55:48 +02:00
http_acl.c MEDIUM: init: convert all trivial registration calls to initcalls 2018-11-26 19:50:32 +01:00
http_act.c MEDIUM: http: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
http_conv.c MEDIUM: init: convert all trivial registration calls to initcalls 2018-11-26 19:50:32 +01:00
http_fetch.c BUG/MINOR: http_fetch/htx: Use HTX versions if the proxy enables the HTX mode 2019-04-17 15:12:27 +02:00
http_htx.c BUG/MINOR: htx: Exclude TCP proxies when the HTX mode is handled during startup 2019-04-24 15:40:02 +02:00
http_msg.c REORG: h1: move legacy http functions to http_msg.c 2018-12-11 17:15:13 +01:00
http_rules.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
htx.c MINOR: htx: Remove support for unused OOB HTX blocks 2019-05-07 22:16:41 +02: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 MINOR: backend: move hash_balance_factor out of chash 2019-01-14 19:33:17 +01:00
lb_fas.c BUG/MEDIUM: lb/threads: always properly lock LB algorithms on maintenance operations 2018-08-21 19:44:53 +02:00
lb_fwlc.c MINOR: lb: make the leastconn algorithm more accurate 2018-12-14 08:33:28 +01:00
lb_fwrr.c BUG/MAJOR: lb/threads: fix AB/BA locking issue in round-robin LB 2019-04-24 14:23:40 +02:00
lb_map.c MEDIUM: lb/threads: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
listener.c BUG/MEDIUM: listener: Fix how unlimited number of consecutive accepts is handled 2019-04-30 15:28:29 +02:00
log.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02: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 BUG/MEDIUM: maps: only try to parse the default value when it's present 2019-04-19 11:35:22 +02:00
memory.c MEDIUM: memory: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
mux_h1.c MINOR: htx: Remove support for unused OOB HTX blocks 2019-05-07 22:16:41 +02:00
mux_h2.c BUG/MEDIUM: h2: Make sure we set send_list to NULL in h2_detach(). 2019-05-09 13:26:48 +02:00
mux_pt.c MEDIUM: connections: Provide a xprt_ctx for each xprt method. 2019-04-18 14:56:24 +02:00
mworker-prog.c CLEANUP: mworker: remove the type field in mworker_proc 2019-04-16 13:26:43 +02:00
mworker.c MINOR: mworker: support a configurable maximum number of reloads 2019-05-07 19:09:01 +02:00
namespace.c MINOR: initcall: apply initcall to all register_build_opts() calls 2018-11-26 19:50:32 +01:00
pattern.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
payload.c MINOR: payload: add sample fetch for TLS ALPN 2019-01-01 09:15:01 +01:00
peers.c MINOR: peers: Do not emit global stick-table names. 2019-05-07 06:54:07 +02:00
pipe.c BUILD: address a few cases of "static <type> inline foo()" 2019-04-15 21:55:48 +02:00
proto_http.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
proto_htx.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
proto_sockpair.c MEDIUM: proto: Change the prototype of the connect() method. 2019-05-06 22:12:57 +02:00
proto_tcp.c MEDIUM: tcp: add the "tfo" option to support TCP fastopen on the server 2019-05-06 22:29:39 +02: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 MEDIUM: proto: Change the prototype of the connect() method. 2019-05-06 22:12:57 +02:00
protocol.c MEDIUM: protocol: use a custom AF_MAX to help protocol parser 2018-09-12 07:12:27 +02:00
proxy.c MEDIUM: stick-table: Stop handling stick-tables as proxies. 2019-05-07 06:54:06 +02:00
queue.c MEDIUM: queues: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
raw_sock.c MEDIUM: tcp: add the "tfo" option to support TCP fastopen on the server 2019-05-06 22:29:39 +02:00
regex.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
sample.c MEDIUM: regex: modify regex_comp() to atomically allocate/free the my_regex struct 2019-05-07 06:58:15 +02:00
server.c CLEANUP: ssl: remove 57 occurrences of useless tests on LIBRESSL_VERSION_NUMBER 2019-05-09 14:26:39 +02:00
session.c CLEANUP: task: remove unneeded tests before task_destroy() 2019-05-07 19:08:16 +02:00
sha1.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
shctx.c CLEANUP: Fix typos in the shctx subsystem 2018-12-02 18:40:29 +01:00
signal.c CLEANUP: Fix a typo in the signal subsystem 2018-12-02 18:39:52 +01:00
ssl_sock.c CLEANUP: ssl: never include openssl/*.h outside of openssl-compat.h anymore 2019-05-10 09:36:42 +02:00
standard.c CLEANUP: standard: use proper const to addr_to_str() and port_to_str() 2019-04-25 17:48:16 +02:00
stats.c CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
stick_table.c BUG/MEDIUM: stick-table: fix regression caused by a change in proxy struct 2019-05-07 14:56:59 +02:00
stream.c BUG/MINOR: stream: Attach the read side on the response as soon as possible 2019-05-10 11:47:00 +02:00
stream_interface.c MEDIUM: streams: Add the ability to retry a request on L7 failure. 2019-05-04 10:19:56 +02:00
task.c MINOR: activity: report context switch counts instead of rates 2019-04-30 14:55:18 +02:00
tcp_rules.c MEDIUM: tcp_rules: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
time.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
trace.c CONTRIB: trace: try to display the function's return value on exit 2017-10-24 19:54:25 +02:00
uri_auth.c CLEANUP: log: Rename Alert/Warning in ha_alert/ha_warning 2017-11-24 17:19:12 +01:00
vars.c MEDIUM: vars: Use the new _HA_ATOMIC_* macros. 2019-03-11 17:02:38 +01:00
version.c BUILD: add a new file "version.c" to carry version updates 2019-01-04 18:20:32 +01:00
wurfl.c MINOR: wurfl: enabled multithreading mode 2019-04-23 11:00:23 +02:00
xxhash.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00