Hi, HAProxy 1.9-dev11 was released on 2018/12/16. It added 146 new commits after version 1.9-dev10.
I expected to release this week-end after running it on the haproxy.org servers, but some annoying issues faced in production took some time to get fixed and delayed the release. Things have been quiet now, with 18 hours running without a glitch in legacy mode (without HTX) and now 13 hours an counting with HTX enabled, so things are getting much better. More regtests were added (thanks Fred and Pieter) and things are going well overall. Among the final updates that were being worked on, Christopher managed to finalize the HTX coverage so that cache, compression and Lua are now supported, Olivier completed the server idle connection pool configuration, and William added the reload operation to the master CLI. We figured that HTTP/2 to the servers made little sense without enabling http-reuse, and since the "safe" mode used to be the recommended setting for several years now, it was decided that it was about time to turn it on by default. Just before this release I've spent some time splitting the README file into README + INSTALL so that README now becomes much more accessible and newcomers don't have to scan it hole before finding their information. The INSTALL file aims at providing you with the quick information you need for common use and spends longer paragraphs on the details close to the end. This should make the documentation more accessible overall. I know that Christopher still has one pending issue to address involving compression and HTX, hopefully we'll have it tomorrow and we'll be able to continue the cleanup process. Now I'm targetting Wednesday for the release. Based on what I'm seeing now and the nature of the last fixed bugs, I'm reasonably confident, and have even hesitated doing it this evening. So there's still some time to beat it hard, but at this point I don't expect that any particular bug will postpone the release any further anyway. Please find the usual URLs below : Site index : http://www.haproxy.org/ Discourse : http://discourse.haproxy.org/ Sources : http://www.haproxy.org/download/1.9/src/ Git repository : http://git.haproxy.org/git/haproxy.git/ Git Web browsing : http://git.haproxy.org/?p=haproxy.git Changelog : http://www.haproxy.org/download/1.9/src/CHANGELOG Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/ Willy --- Complete changelog : Christopher Faulet (26): 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 BUG/MAJOR: compression/cache: Make it really works with these both filters 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. REGTEST: Add a reg test for HTTP cookies. 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 (22): 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. BUG/MEDIUM: log: Don't call sample_fetch_as_type if we don't have a stream. BUG/MEDIUM: h2: Don't forget to destroy the h2s after deferred shut. MEDIUM: proxy: Set http-reuse safe as default. MEDIUM: servers: Add a command to limit the number of idling connections. MEDIUM: servers: Replace idle-timeout with pool-purge-delay. MEDIUM: mux: Destroy the stream before trying to add the conn to the idle list. MEDIUM: mux: provide the session to the init() and attach() method. MEDIUM: sessions: Don't keep an infinite number of idling connections. MEDIUM: servers: Be more agressive when adding H2 connection to idle lists. MEDIUM: mux_h2: Always set CS_FL_NOT_FIRST for new conn_streams. MINOR: pools: Cast to volatile int * instead of int *. BUG/MEDIUM: h2: Don't destroy the h2s if it still has a cs attached. 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() Rosen Penev (1): BUILD: ssl: Fix compilation without deprecated OpenSSL 1.1 APIs William Lallemand (18): 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 MINOR: cli: implements 'reload' on master CLI BUG/MEDIUM: threads: don't close the thread waker pipe if not init Willy Tarreau (63): 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 MINOR: mworker/cli: indicate in the master prompt when a reload failed BUG/MEDIUM: mux-h1: make sure we always have at least one HTX block to send BUG/MAJOR: backend: only update server's counters when the server exists MINOR: tools: preset the port of fd-based "sockets" to zero BUG/MINOR: log: fix logging to both FD and IP BUILD: thread: properly report multi-thread support BUG/MINOR: logs: leave startup-logs global and not per-thread BUG/MEDIUM: htx/cache: use the correct class of error codes on abort BUG/MINOR: cache: also consider CF_SHUTR to abort delivery MINOR: debug: make the ABORT_NOW macro use a volatile int BUG/MEDIUM: mux-h1: don't try to process an empty input buffer DOC: clarify the agent-check status line syntax BUG/MAJOR: hpack: fix length check for short names encoding DOC: split the README into README + INSTALL ---

