haproxy/src
Willy Tarreau 1ac5f20804 BUG/MEDIUM: stream-int: don't subscribed for recv when we're trying to flush data
If we cannot splice incoming data using rcv_pipe() due to remaining data
in the buffer, we must not subscribe to the mux but instead tag the
stream-int as blocked on missing Rx room. Otherwise when data are
flushed, calling si_chk_rcv() will have no effect because the WAIT_EP
flag remains present, and we'll end in an rx timeout. This case is very
hard to reproduce, and requires an inversion of the polling side in the
middle of a transfer. This can only happen when the client and the server
are using similar links and when splicing is enabled. It typically takes
hundreds of MB to GB for the problem to happen, and tends to be magnified
by the use of option contstats which causes process_stream() to be called
every 5s and to try again to recv.

This fix must be backported to 2.1, 2.0, and possibly 1.9.
2019-12-04 11:55:49 +01:00
..
51d.c REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
acl.c BUG/MINOR: acl: Fix memory leaks when an ACL expression is parsed 2019-09-13 10:08:44 +02:00
action.c BUG/MEDIUM: stick-table: Wrong stick-table backends parsing. 2019-08-07 10:32:31 +02:00
activity.c CLEANUP: cli: replace all occurrences of manual handling of return messages 2019-08-09 11:26:10 +02:00
applet.c BUG/MEDIUM: applet: always check a fast running applet's activity before killing 2019-10-11 16:05:57 +02:00
arg.c MEDIUM: tools: improve time format error detection 2019-06-07 19:32:02 +02:00
auth.c BUILD/MINOR: auth: enabling for osx 2019-09-08 12:20:13 +02:00
backend.c MEDIUM: stream/trace: Register a new trace source with its events 2019-11-06 10:14:32 +01: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 MINOR: chunk: add chunk_istcat() to concatenate an ist after a chunk 2019-10-29 13:09:14 +01:00
calltrace.c REORG: trace: rename trace.c to calltrace.c and mention it's not thread-safe 2019-08-22 20:21:00 +02:00
cfgparse-global.c MEDIUM: init: prevent process and thread creation at runtime 2019-12-03 11:49:00 +01:00
cfgparse-listen.c BUG/MINOR: config: Update cookie domain warn to RFC6265 2019-10-31 06:06:52 +01:00
cfgparse.c MEDIUM: init: prevent process and thread creation at runtime 2019-12-03 11:49:00 +01:00
channel.c MINOR: channel: Add the function channel_add_input 2019-01-02 20:12:44 +01:00
checks.c MEDIUM: init: prevent process and thread creation at runtime 2019-12-03 11:49:00 +01:00
chunk.c Revert "MINOR: chunks: Make sure trash_size is only set once." 2019-06-07 15:37:47 +02:00
cli.c BUG/MINOR: cli: fix out of bounds in -S parser 2019-11-25 10:04:34 +01:00
compression.c MINOR: time: move the cpu, mono, and idle time to thread_info 2019-05-20 21:14:14 +02:00
connection.c MEDIUM: connection: enable reading only once the connection is confirmed 2019-09-06 17:50:36 +02:00
da.c REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
debug.c BUG/MEDIUM: debug: address a possible null pointer dereference in "debug dev stream" 2019-10-25 10:10:07 +02:00
dict.c BUG/MINOR: dict: race condition fix when inserting dictionary entries. 2019-06-11 09:54:12 +02:00
dns.c CLEANUP: dns: resolution can never be null 2019-11-28 20:41:46 +01:00
ev_epoll.c MEDIUM: fd: do not use the FD_POLL_* flags in the pollers anymore 2019-09-06 19:09:56 +02:00
ev_evports.c BUG/MINOR: build: fix event ports (Solaris) 2019-09-23 19:08:39 +02:00
ev_kqueue.c MEDIUM: fd: do not use the FD_POLL_* flags in the pollers anymore 2019-09-06 19:09:56 +02:00
ev_poll.c MEDIUM: fd: do not use the FD_POLL_* flags in the pollers anymore 2019-09-06 19:09:56 +02:00
ev_select.c MEDIUM: fd: do not use the FD_POLL_* flags in the pollers anymore 2019-09-06 19:09:56 +02:00
fcgi-app.c BUG/MINOR: fcgi-app: Make the directive pass-header case insensitive 2019-12-02 10:38:52 +01:00
fcgi.c MINOR: fcgi: Add code related to FCGI protocol 2019-09-17 10:18:54 +02:00
fd.c MINOR: fd: make updt_fd_polling() a normal function 2019-09-05 09:31:18 +02:00
filters.c MEDIUM: filters: Adapt filters API to allow again TCP filtering on HTX streams 2019-11-15 13:43:08 +01:00
flt_http_comp.c MEDIUM: fcgi-app: Add FCGI application and filter 2019-09-17 10:18:54 +02:00
flt_spoe.c BUG/MINOR: spoe: fix off-by-one length in UUID format string 2019-10-29 10:33:13 +01:00
flt_trace.c MEDIUM: filters: Adapt filters API to allow again TCP filtering on HTX streams 2019-11-15 13:43:08 +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 MINOR: frontend: switch from conn->addr.{from,to} to conn->{src,dst} 2019-07-19 13:50:09 +02:00
h1.c BUG/MINOR: h1: Don't test the host header during response parsing 2019-11-27 14:01:17 +01:00
h1_htx.c CLEANUP: h1-htx: Move htx-to-h1 formatting functions from htx.c to h1_htx.c 2019-10-14 22:28:50 +02:00
h2.c BUG/MAJOR: h2: make header field name filtering stronger 2019-11-25 11:11:32 +01:00
haproxy.c MEDIUM: init: prevent process and thread creation at runtime 2019-12-03 11:49:00 +01:00
hash.c MINOR: hash: add new function hash_crc32c 2018-03-21 05:04:01 +01:00
hathreads.c BUILD/MEDIUM: threads: rename thread_info struct to ha_thread_info 2019-10-17 07:15:17 +02:00
hlua.c BUILD: debug: Avoid warnings in dev mode with -02 because of some BUG_ON tests 2019-11-20 14:11:47 +01:00
hlua_fcn.c MINOR: stats: prepare to add a description with each stat/info field 2019-10-10 11:30:07 +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 MINOR: http: Add a function to get the authority into a URI 2019-10-09 11:05:31 +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 REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
http_ana.c BUG/MINOR: http-ana: Properly catch aborts during the payload forwarding 2019-11-20 14:11:47 +01:00
http_conv.c MINOR: sample: add us/ms support to date/http_date 2019-10-31 08:47:31 +01:00
http_fetch.c CLEANUP: h1-htx: Move htx-to-h1 formatting functions from htx.c to h1_htx.c 2019-10-14 22:28:50 +02:00
http_htx.c BUG/MINOR: http-htx: Don't make http_find_header() fail if the value is empty 2019-11-29 11:48:15 +01:00
http_rules.c REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
htx.c CLEANUP: h1-htx: Move htx-to-h1 formatting functions from htx.c to h1_htx.c 2019-10-14 22:28:50 +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 BUG/MEDIUM: lb-chash: Ensure the tree integrity when server weight is increased 2019-08-01 11:35:29 +02:00
lb_fas.c BUG/MEDIUM: lb_fas: Don't test the server's lb_tree from outside the lock 2019-07-05 14:26:15 +02:00
lb_fwlc.c BUG/MINOR: lb/leastconn: ignore the server weights for empty servers 2019-09-06 17:13:44 +02:00
lb_fwrr.c BUG/MAJOR: lb/threads: make sure the avoided server is not full on second pass 2019-05-27 10:29:59 +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: listeners: always pause a listener on out-of-resource condition 2019-11-15 10:34:51 +01:00
log.c BUG/MINOR: log: make "show startup-log" use a ring buffer instead 2019-11-15 15:50:16 +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: replace all occurrences of manual handling of return messages 2019-08-09 11:26:10 +02:00
memory.c MINOR: pools: always pre-initialize allocated memory outside of the lock 2019-07-09 10:40:33 +02:00
mux_fcgi.c BUILD/MINOR: trace: fix use of long type in a few printf format strings 2019-11-27 15:45:11 +01:00
mux_h1.c BUILD/MINOR: trace: fix use of long type in a few printf format strings 2019-11-27 15:45:11 +01:00
mux_h2.c MINOR: mux-h2/trace: report the connection and/or stream error code 2019-11-25 11:34:26 +01:00
mux_pt.c MINOR: mux: Add a new method to get informations about a mux. 2019-10-29 14:15:20 +01:00
mworker-prog.c MEDIUM: mworker-prog: Add user/group options to program section 2019-07-15 16:43:16 +02:00
mworker.c BUILD: mworker: silence two printf format warnings around getpid() 2019-06-22 07:57:56 +02:00
namespace.c BUG/MEDIUM: namespace: close open namespaces during soft shutdown 2019-09-25 23:33:52 +02:00
pattern.c BUG/MEDIUM: pattern: make the pattern LRU cache thread-local and lockless 2019-10-23 07:27:25 +02:00
payload.c REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
peers.c BUG/MINOR: peers: "peer alive" flag not reset when deconnecting. 2019-11-20 13:38:13 +01:00
pipe.c BUILD: address a few cases of "static <type> inline foo()" 2019-04-15 21:55:48 +02:00
proto_sockpair.c BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff 2019-07-24 16:45:02 +02:00
proto_tcp.c MINOR: tcp: avoid confusion in time parsing init 2019-10-24 10:25:00 +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: connection: enable reading only once the connection is confirmed 2019-09-06 17:50:36 +02:00
protocol.c BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff 2019-07-24 16:45:02 +02:00
proxy.c BUG/MINOR: mworker/cli: reload fail with inherited FD 2019-10-18 21:45:42 +02:00
queue.c BUG/MINOR: queue/threads: make the queue unlinking atomic 2019-11-14 14:58:39 +01:00
raw_sock.c MEDIUM: connection: enable reading only once the connection is confirmed 2019-09-06 17:50:36 +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
ring.c MINOR: ring: make the parse function automatically set the handler/release 2019-11-15 15:48:12 +01:00
sample.c MINOR: sample: add us/ms support to date/http_date 2019-10-31 08:47:31 +01:00
server.c MEDIUM: dns: Add resolve-opts "ignore-weight" 2019-11-21 17:25:31 +01:00
session.c CLEANUP: session: slightly simplify idle connection cleanup logic 2019-11-15 07:06:46 +01: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
sink.c MINOR: ring: make the parse function automatically set the handler/release 2019-11-15 15:48:12 +01:00
ssl_sock.c BUG/MINOR: ssl/cli: 'ssl cert' cmd only usable w/ admin rights 2019-12-03 15:10:46 +01:00
standard.c BUILD/MINOR: tools: shut up the format truncation warning in get_gmt_offset() 2019-10-29 10:19:34 +01:00
stats.c BUG/MINOR: stats: Fix HTML output for the frontends heading 2019-12-02 11:40:04 +01:00
stick_table.c MINOR: stick-table: allow sc-set-gpt0 to set value from an expression 2019-11-15 18:24:19 +01:00
stream.c BUILD/MINOR: trace: fix use of long type in a few printf format strings 2019-11-27 15:45:11 +01:00
stream_interface.c BUG/MEDIUM: stream-int: don't subscribed for recv when we're trying to flush data 2019-12-04 11:55:49 +01:00
task.c MEDIUM: task: Split the tasklet list into two lists. 2019-10-11 16:37:41 +02:00
tcp_rules.c MEDIUM: stream/trace: Register a new trace source with its events 2019-11-06 10:14:32 +01:00
time.c MINOR: time: add timeofday_as_iso_us() to return instant time as ISO 2019-09-26 08:13:38 +02:00
trace.c BUG/MEDIUM: trace: fix a typo causing an incorrect startup error 2019-11-25 19:47:22 +01:00
uri_auth.c MINOR: stats: replace the ST_* uri_auth flags with STAT_* 2019-10-10 11:30:07 +02:00
vars.c REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
version.c MINOR: version: make the version strings variables, not constants 2019-10-16 09:56:57 +02:00
wdt.c BUILD/MEDIUM: threads: rename thread_info struct to ha_thread_info 2019-10-17 07:15:17 +02:00
wurfl.c BUG/MINOR: WURFL: fix send_log() function arguments 2019-10-15 10:47:31 +02:00
xprt_handshake.c CLEANUP: connection: rename the wait_event.task field to .tasklet 2019-06-14 14:42:29 +02:00
xxhash.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00