haproxy/src
Willy Tarreau 89b6a2b4fd MINOR: stream-int: relax the forwarding rules in stream_int_notify()
There currently is an optimization in stream_int_notify() consisting
in not trying to forward small bits of data if extra data remain to be
processed. The purpose is to avoid forwarding one chunk at a time if
multiple chunks are available to be parsed at once. It consists in
avoiding sending pending output data if there are still data to be
parsed in the channel's buffer, since process_stream() will have the
opportunity to deal with them all at once.

Not only this optimization is less useful with the new way the connections
work, but it even causes problems like lost events since WAIT_ROOM will
not be removed. And with HTX, it will never be able to update the input
buffer after the first read.

Let's relax the rules now, by always sending if we don't have the
CF_EXPECT_MORE flag (used to group writes), or if the buffer is
already full.
2018-11-18 21:41:44 +01:00
..
51d.c REORG: http: move the code to different files 2018-10-02 18:26:59 +02:00
acl.c MEDIUM: chunks: make the chunk struct's fields match the buffer struct 2018-07-19 16:23:43 +02:00
action.c MINOR: action: Add function to check rules using an action ACT_ACTION_TRK_* 2017-10-31 11:36:12 +01:00
applet.c MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
arg.c MEDIUM: chunks: make the chunk struct's fields match the buffer struct 2018-07-19 16:23:43 +02:00
auth.c MEDIUM: auth/threads: make use of crypt_r() on systems supporting it 2018-10-29 19:17:39 +01:00
backend.c BUG/MINOR: backend: assign the wait list after the error check 2018-10-28 20:36:00 +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 MAJOR: buffer: finalize buffer detachment 2018-07-19 16:23:43 +02:00
cache.c BUILD: cache: fix a build warning regarding too large an integer for the age 2018-11-11 14:03:02 +01:00
cfgparse.c BUG/MINOR: config: Copy default error messages when parsing of a backend starts 2018-11-18 06:17:03 +01:00
channel.c BUG/MEDIUM: buffers: Make sure we don't wrap in ci_insert_line2/b_rep_blk. 2018-10-08 16:11:54 +02:00
checks.c MEDIUM: connections: Don't directly mess with the polling from the upper layers. 2018-10-21 05:58:40 +02:00
chunk.c MINOR: chunk: remove impossible tests on negative chunk->data 2018-08-22 05:28:32 +02:00
cli.c MEDIUM: cli: worker socketpair is unstoppable 2018-11-16 17:05:40 +01:00
compression.c REORG: http: move the HTTP semantics definitions to http.h/http.c 2018-09-11 10:30:25 +02:00
connection.c MEDIUM: connections: Don't directly mess with the polling from the upper layers. 2018-10-21 05:58:40 +02:00
da.c CLEANUP: http: remove some leftovers from recent cleanups 2018-10-02 18:37:27 +02:00
dns.c BUILD: dns: fix null-deref build warning at -Wextra 2018-09-20 11:42:15 +02:00
ev_epoll.c MINOR: poller: move time and date computation out of the pollers 2018-10-17 19:59:43 +02:00
ev_kqueue.c MINOR: poller: move time and date computation out of the pollers 2018-10-17 19:59:43 +02:00
ev_poll.c MINOR: poller: move time and date computation out of the pollers 2018-10-17 19:59:43 +02:00
ev_select.c MINOR: poller: move time and date computation out of the pollers 2018-10-17 19:59:43 +02:00
fd.c MEDIUM: fd/threads: only grab the fd's lock if the FD has more than one thread 2018-10-15 13:25:06 +02:00
filters.c DOC: Fix typos in lua documentation 2018-09-14 09:31:34 +02:00
flt_http_comp.c REORG: http: move some header value processing functions to http.c 2018-09-11 10:30:25 +02:00
flt_spoe.c MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
flt_trace.c MAJOR: chunks: replace struct chunk with struct buffer 2018-07-19 16:23:43 +02: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: chunks: make the chunk struct's fields match the buffer struct 2018-07-19 16:23:43 +02:00
h1.c MINOR: h1: Add the flag H1_MF_NO_PHDR to not add pseudo-headers during parsing 2018-10-12 16:15:18 +02:00
h2.c BUG/MEDIUM: h2: implement missing support for chunked encoded uploads 2018-04-26 10:20:44 +02:00
haproxy.c MEDIUM: jobs: support unstoppable jobs for soft stop 2018-11-16 17:05:40 +01:00
hash.c MINOR: hash: add new function hash_crc32c 2018-03-21 05:04:01 +01:00
hathreads.c BUG/MEDIUM: threads: fix thread_release() at the end of the rendez-vous point 2018-10-16 17:03:16 +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 MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
hlua_fcn.c MEDIUM: lua: Add stick table support for Lua. 2018-09-29 20:15:01 +02:00
hpack-dec.c BUG/CRITICAL: hpack: fix improper sign check on the header index value 2018-09-20 11:45:56 +02:00
hpack-enc.c MAJOR: chunks: replace struct chunk with struct buffer 2018-07-19 16:23:43 +02:00
hpack-huff.c BUG/MINOR: hpack: must reject huffman literals padded with more than 7 bits 2017-12-03 21:08:39 +01:00
hpack-tbl.c BUG/CRITICAL: hpack: fix improper sign check on the header index value 2018-09-20 11:45:56 +02:00
http.c MINOR: http: Implement "early-hint" http request rules. 2018-11-12 21:08:55 +01:00
http_acl.c REORG: http: move the code to different files 2018-10-02 18:26:59 +02:00
http_act.c REORG: http: move HTTP rules parsing to http_rules.c 2018-10-02 18:28:05 +02:00
http_conv.c REORG: http: move the code to different files 2018-10-02 18:26:59 +02:00
http_fetch.c BUG/MINOR: http_fetch: Remove the version part when capturing the request uri 2018-11-16 16:05:51 +01:00
http_rules.c MINOR: http: Make new "early-hint" http-request action really be parsed. 2018-11-12 21:08:55 +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 BUG/MEDIUM: lb/threads: always properly lock LB algorithms on maintenance operations 2018-08-21 19:44:53 +02: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 BUG/MEDIUM: lb/threads: always properly lock LB algorithms on maintenance operations 2018-08-21 19:44:53 +02:00
lb_fwrr.c BUG/MEDIUM: lb/threads: always properly lock LB algorithms on maintenance operations 2018-08-21 19:44:53 +02:00
lb_map.c REORG: http: move the HTTP semantics definitions to http.h/http.c 2018-09-11 10:30:25 +02:00
listener.c MEDIUM: listeners: set O_CLOEXEC on the accepted FDs 2018-10-28 14:03:31 +01:00
log.c BUG/MEDIUM: log: don't CLOEXEC the inherited FDs 2018-11-13 19:32:45 +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 MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
memory.c MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
mux_h2.c MINOR: mux: implement a get_first_cs() method 2018-11-18 21:29:20 +01:00
mux_pt.c MINOR: mux: implement a get_first_cs() method 2018-11-18 21:29:20 +01:00
namespace.c MINOR: namespaces: don't build namespace.c if disabled 2018-11-12 19:15:15 +01:00
pattern.c BUG/MEDIUM: patterns: fix possible double free when reloading a pattern list 2018-09-19 06:46:51 +02:00
payload.c MEDIUM: chunks: make the chunk struct's fields match the buffer struct 2018-07-19 16:23:43 +02:00
peers.c MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
pipe.c CLEANUP: pools: rename all pool functions and pointers to remove this "2" 2017-11-24 17:49:53 +01:00
proto_http.c BUG/MINOR: http: Be sure to sent fully formed HTTP 103 responses 2018-11-16 16:05:51 +01:00
proto_sockpair.c BUILD: sockpair: silence a build warning at -Wextra 2018-09-20 11:42:15 +02:00
proto_tcp.c REORG: http: move HTTP rules parsing to http_rules.c 2018-10-02 18:28:05 +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 MINOR: connection: make conn_sock_drain() work for all socket families 2018-08-24 14:45:46 +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: listeners: support unstoppable listener 2018-11-16 17:05:40 +01:00
queue.c REORG: http: move HTTP rules parsing to http_rules.c 2018-10-02 18:28:05 +02:00
raw_sock.c MINOR: connections: Introduce an unsubscribe method. 2018-10-11 15:34:21 +02:00
regex.c CLEANUP: log: Rename Alert/Warning in ha_alert/ha_warning 2017-11-24 17:19:12 +01:00
sample.c REORG: http: move the HTTP semantics definitions to http.h/http.c 2018-09-11 10:30:25 +02:00
server.c MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
session.c BUG/MINOR: tasks: make sure wakeup events are properly reported to subscribers 2018-11-05 17:15:21 +01:00
sha1.c IMPORT: sha1: import SHA1 functions 2017-10-25 04:45:48 +02:00
shctx.c MINOR: shctx: Change max. object size type to unsigned int. 2018-10-26 04:54:40 +02:00
signal.c MEDIUM: startup: unify signal init between daemon and mworker mode 2018-09-11 10:21:58 +02:00
ssl_sock.c MINOR: stream-int: rename si_applet_{want|stop|cant}_{get|put} 2018-11-11 10:18:37 +01:00
standard.c MEDIUM: protocol: sockpair protocol 2018-09-12 07:20:17 +02:00
stats.c MEDIUM: jobs: support unstoppable jobs for soft stop 2018-11-16 17:05:40 +01:00
stick_table.c BUG/MEDIUM: Make sure stksess is properly aligned. 2018-11-15 14:24:05 +01:00
stream.c MINOR: stream: move the conn_stream specific calls to the stream-int 2018-11-17 19:53:45 +01:00
stream_interface.c MINOR: stream-int: relax the forwarding rules in stream_int_notify() 2018-11-18 21:41:44 +01:00
task.c OPTIM: tasks: group all tree roots per cache line 2018-10-15 19:06:13 +02:00
tcp_rules.c BUG/MINOR: build: Fix compilation with debug mode enabled 2018-07-20 10:45:20 +02:00
time.c MEDIUM: time: measure the time stolen by other threads 2018-10-19 08:51:59 +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 REORG: http: move HTTP rules parsing to http_rules.c 2018-10-02 18:28:05 +02:00
wurfl.c MAJOR: chunks: replace struct chunk with struct buffer 2018-07-19 16:23:43 +02:00
xxhash.c CLEANUP: remove unneeded casts 2016-04-03 14:17:42 +02:00