Changes since version 1.9-dev10 : Christopher Faulet (25): BUG/MINOR: mux-h1: Fix conn_mode processing for headerless outgoing messages BUG/MEDIUM: mux-h1: Add a BUSY mode to not loop on pipelinned requests BUG/MEDIUM: mux-h1: Don't loop on the headers parsing if the read0 was received BUG/MEDIUM: htx: Always do a defrag if a block value is replace by a bigger one MINOR: compression: Rename the function check_legacy_http_comp_flt() MINOR: cache/htx: Don't use the same cache on HTX and legacy HTTP proxies MINOR: cache: Register the cache as a data filter only if response is cacheable MEDIUM: cache/htx: Add the HTX support into the cache MINOR: cache: Improve and simplify the cache configuration check MINOR: filters: Export the name of known filters MEDIUM: cache/compression: Add a way to safely combined compression and cache MEDIUM: cache: Require an explicit filter declaration if other filters are used BUG/MEDIUM: mux-h1: Fix the zero-copy on output for chunked messages BUG/MEDIUM: mux-h1: Fix loop if server closes its connection with unparsed data MINOR: mux-h1: Add helper functions to wake a stream from recv or send BUG/MEDIUM: mux-h1: Wake the stream for send once the connection is established BUG/MINOR: proto_htx: Fix htx_res_set_status to also set the reason BUG/MINOR: stats: Parse post data for HTX streams MINOR: payload/htx: Adapt smp_fetch_len to be HTX aware MINOR: http_fecth: Implement body_len and body_size sample fetches for the HTX MAJOR: lua: Forbid calls to Channel functions for LUA scripts in HTTP proxies MEDIUM: lua/htx: Adapt functions of the HTTP to be compatible with HTX MINOR: lua/htx: Adapt the functions get_in_length and is_full to be HTX aware MAJOR: lua/htx: Adapt HTTP applets to support HTX messages MINOR: lua: Remove useless check on the messages state in HTTP functions Frederic Lecaille (5): REGTEST: Reg testing improvements. REGTEST: Add a first test for health-checks. REGTEST: Reg test for "check" health-check option. REGTEST: level 1 health-check test 2. REGTEST: Add miscellaneous reg tests for health-checks. Jérôme Magnin (2): DOC: clarify that check-sni needs an argument. DOC: refer to check-sni in the documentation of sni Olivier Houchard (10): BUG/MEDIUM: connection: Don't use the provided conn_stream if it was tried. BUG/MEDIUM: connections: Remove error flags when retrying. BUG/MEDIUM: mux-h2: Don't forget to set the CS_FL_EOS flag with htx. BUG/MEDIUM: connections: Remove CS_FL_EOS | CS_FL_REOS on retry. BUG/MEDIUM: stream_interface: Don't report read0 if we were not connected. BUG/MEDIUM: connection: Just make sure we closed the fd on connection failure. MEDIUM: mux: Add an optional "reset" method. BUG/MEDIUM: connections: Don't attempt to reuse an unusable connection. MEDIUM: htx: Try to take a connection over if it has no owner. BUG/MEDIUM: htx: When performing zero-copy, start from the right offset. PiBa-NL (3): REGTEST/MINOR: remove double body specification for server txresp REGTEST/MINOR: skip seamless-reload test with abns socket on freebsd REGTEST/MINOR: remove health-check that can make the test fail Remi Gacogne (5): BUG: dns: Prevent stack-exhaustion via recursion loop in dns_read_name BUG: dns: Prevent out-of-bounds read in dns_read_name() BUG: dns: Prevent out-of-bounds read in dns_validate_dns_response() BUG: dns: Fix out-of-bounds read via signedness error in dns_validate_dns_response() BUG: dns: Fix off-by-one write in dns_validate_dns_response() William Lallemand (16): MEDIUM: cli: rework the CLI proxy parser MINOR: cli: parse prompt command in the CLI proxy MINOR: cli: implements 'quit' in the CLI proxy BUG/MINOR: cli: wait for payload data even without prompt MEDIUM: cli: handle payload in CLI proxy MINOR: cli: use pcli_flags for prompt activation DOC: master CLI documentation in management.txt MINOR: cli: change 'show proc' output of old processes MEDIUM: cli: store CLI level in the appctx MEDIUM: cli: show and change CLI permissions CLEANUP: cli: use dedicated define instead of appctx ones MEDIUM: cli: handle CLI level from the master CLI BUG/MEDIUM: cli: handle correctly prefix and payload BUILD: Makefile: Implements the help target MINOR: mworker: set all_threads_mask and pid_bit to 1 BUG/MINOR: mworker: don't use unitialized mworker_proc struct Willy Tarreau (49): BUG/MEDIUM: mux-h2: fix encoding of non-GET/POST methods BUG/MINOR: hpack: fix off-by-one in header name encoding length calculation CLEANUP: hpack: no need to include chunk.h, only include buf.h MINOR: hpack: simplify the len to bytes conversion MINOR: hpack: use ist2bin() to copy header names in hpack_encode_header() MINOR: hpack: optimize header encoding for short names CONTRIB: hpack: add a compressed stream generator for the encoder MEDIUM: hpack: make it possible to encode any static header name MINOR: hpack: move the length computation and encoding functions to .h MINOR: hpack: provide a function to encode a short indexed header MINOR: hpack: provide a function to encode a long indexed header MINOR: hpack: provide new functions to encode the ":status" header MEDIUM: mux-h2: make use of standard HPACK encoding functions for the status MINOR: hpack: provide a function to encode an HTTP method MEDIUM: mux-h2: make use of hpack_encode_method() to encode the method MINOR: hpack: provide a function to encode an HTTP scheme MEDIUM: mux-h2: make use of hpack_encode_scheme() to encode the scheme MINOR: hpack: provide a function to encode an HTTP path MEDIUM: mux-h2: make use of hpack_encode_path() to encode the path REGTEST: add the HTTP rules test involving HTX processing REORG: connection: centralize the conn_set_{tos,mark,quickack} functions REORG: htx: merge types+proto into common/htx.h REORG: http: create http_msg.c to place there some legacy HTTP parts REORG: h1: move legacy http functions to http_msg.c REORG: h1: move the h1_state definition to proto_http CLEANUP: h1: remove some occurrences of unneeded h1.h inclusions REORG: h1: merge types+proto into common/h1.h CLEANUP: stream: remove SF_TUNNEL, SF_INITIALIZED, SF_CONN_TAR MEDIUM: mux-h1: implement true zero-copy of DATA blocks MINOR: config: round up global.tune.bufsize to the next multiple of 2 void* BUG/MINOR: mux-h2: refrain from muxing during the preface BUG/MINOR: mux-h2: advertise a larger connection window size MINOR: mux-h2: avoid copying large blocks into full buffers MEDIUM: mux-h2: implement true zero-copy send of large HTX DATA blocks MINOR: mux-h2: force reads to be HTX-aligned in HTX mode REGTEST: the cache regtest requires haproxy 1.9 REGTESTS: adjust the http-rules regtest to support window updates REGTEST: add a few HTTP messaging tests MINOR: lb: make the leastconn algorithm more accurate REGTEST: fix missing space in checks/s00001 REGTEST: http-messaging: add "option http-buffer-request" for H2 tests BUG/MEDIUM: cache: fix random crash on filter parser's error path MINOR: connection: realign empty buffers in muxes, not transport layers MINOR: mux_h1/h2: simplify the zero-copy Rx alignment MINOR: backend: count the number of connect and reuse per server and per backend BUG/MINOR: stats: fix inversion of failed header rewrites and other statuses MINOR: tools: increase the number of ITOA strings to 16 MINOR: cache: report the number of cache lookups and cache hits MEDIUM: tasks: check the global task mask instead of the thread number