Hi, HAProxy 2.1-dev1 was released on 2019/07/16. It added 85 new commits after version 2.1-dev0.
Let's present it the easy way : this version is essentially 2.0.2 plus the few patches that were pending in the -next branch (removal of a few long deprecated options), the addition of a sha2() converter, the storage of the server-state global file in a tree for much faster reloads, and the addition of "user" and "group" directives to the "programs" section. The idea is to have a clean and working reference for this branch before we pull the hammer and start to break everything again :-) Some short-term changes to come include removal of HTTP legacy mode, which will definitely open a few new bugs and help us remove many others once the code becomes cleaner, some updates to the connection layers to improve thread support (we'll try to share idle connections between threads, that's hard but if we don't address this now it will be increasingly harder over time to work with threads), hopefully rework the shutdown vs abort stuff, and some of the various things marked as development notes in GitHub issues. So if you want to only remember something simple, just keep in mind that 2.1-dev1 is the last safe 2.1-dev for quite some time. Please find the usual URLs below : Site index : http://www.haproxy.org/ Discourse : http://discourse.haproxy.org/ Slack channel : https://slack.haproxy.org/ Issue tracker : https://github.com/haproxy/haproxy/issues Sources : http://www.haproxy.org/download/2.1/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/2.1/src/CHANGELOG Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/ Willy --- Complete changelog : Alain Belkadi (1): DOC: Fix typo in intro.txt Aleksandar Lazic (1): DOC: contrib: spoa_server Add some hints for building spoa_server Andrew Heberle (1): MEDIUM: mworker-prog: Add user/group options to program section Baptiste Assmann (1): MEDIUM: server: server-state global file stored in a tree Christopher Faulet (32): BUG/MEDIUM: h2/htx: Update data length of the HTX when the cookie list is built BUG/MINOR: lua/htx: Make txn.req_req_* and txn.res_rep_* HTX aware BUG/MINOR: mux-h1: Add the header connection in lower case in outgoing messages MINOR: htx: Add the function htx_change_blk_value_len() BUG/MEDIUM: htx: Fully update HTX message when the block value is changed BUG/MEDIUM: mux-h2: Reset padlen when several frames are demux BUG/MEDIUM: mux-h2: Remove the padding length when a DATA frame size is checked BUG/MEDIUM: lb_fwlc: Don't test the server's lb_tree from outside the lock BUG/MINOR: htx: Save hdrs_bytes when the HTX start-line is replaced BUG/MAJOR: mux-h1: Don't crush trash chunk area when outgoing message is formatted BUG/MINOR: memory: Set objects size for pools in the per-thread cache BUG/MEDIUM: proto_htx: Don't add EOM on 1xx informational messages BUG/MEDIUM: mux-h1: Use buf_room_for_htx_data() to detect too large messages BUG/MINOR: mux-h1: Make format errors during output formatting fatal BUG/MEDIUM: mux-h1: Always release H1C if a shutdown for writes was reported BUG/MINOR: mux-h1: Skip trailers for non-chunked outgoing messages BUG/MINOR: mux-h1: Don't return the empty chunk on HEAD responses BUG/MINOR: contrib/prometheus-exporter: Don't use channel_htx_recv_max() BUG/MINOR: hlua: Don't use channel_htx_recv_max() BUG/MEDIUM: channel/htx: Use the total HTX size in channel_htx_recv_limit() BUG/MINOR: hlua/htx: Respect the reserve when HTX data are sent BUG/MINOR: contrib/prometheus-exporter: Respect the reserve when data are sent BUG/MINOR: contrib/prometheus-exporter: Don't try to add empty data blocks MINOR: action: Add the return code ACT_RET_DONE for actions BUG/MEDIUM: http/applet: Finish request processing when a service is registered BUG/MEDIUM: lb_fas: Don't test the server's lb_tree from outside the lock BUG/MEDIUM: mux-h1: Handle TUNNEL state when outgoing messages are formatted BUG/MINOR: mux-h1: Don't process input or ouput if an error occurred MINOR: stream-int: Factorize processing done after sending data in si_cs_send() BUG/MEDIUM: stream-int: Don't rely on CF_WRITE_PARTIAL to unblock opposite si BUG/MINOR: server: Be really able to keep "pool-max-conn" idle connections BUG/MEDIUM: mux-h1: Don't release h1 connection if there is still data to send Dave Pirotte (1): BUG/MINOR: mux-h1: Correctly report Ti timer when HTX and keepalives are used David Carlier (1): BUG/MEDIUM: da: cast the chunk to string. Frédéric Lécaille (3): BUG/MAJOR: sample: Wrong stick-table name parsing in "if/unless" ACL condition. MINOR: server: Add "no-tfo" option. CLEANUP: proto_tcp: Remove useless header inclusions. John Roesler (1): DOC: Fix typos and grammer in configuration.txt Jérôme Magnin (1): REGTESTS: checks: tcp-check connect to multiple ports Lukas Tribus (1): BUG/MINOR: ssl: revert empty handshake detection in OpenSSL <= 1.0.2 Olivier Houchard (14): BUG/MEDIUM: stream_interface: Don't add SI_FL_ERR the state is < SI_ST_CON. BUG/MEDIUM: connections: Always add the xprt handshake if needed. BUG/MEDIUM: ssl: Don't do anything in ssl_subscribe if we have no ctx. BUG/MEDIUM: ssl: Don't attempt to set alpn if we're not using SSL. BUG/MEDIUM: connections: Always call shutdown, with no linger. BUG/MEDIUM: checks: Make sure the tasklet won't run if the connection is closed. BUG/MEDIUM: connections: Make sure we're unsubscribe before upgrading the mux. BUG/MEDIUM: servers: Authorize tfo in default-server. BUG/MEDIUM: sessions: Don't keep an extra idle connection in sessions. BUG/MEDIUM: servers: Don't forget to set srv_cs to NULL if we can't reuse it. BUG/MEDIUM: checks: Don't attempt to read if we destroyed the connection. BUG/MEDIUM: servers: Fix a race condition with idle connections. BUG/MEDIUM: streams: Don't give up if we couldn't send the request. BUG/MEDIUM: streams: Don't redispatch with L7 retries if redispatch isn't set. Tim Duesterhus (9): MEDIUM: Make 'block' directive fatal MEDIUM: Make 'redispatch' directive fatal MEDIUM: Make '(cli|con|srv)timeout' directive fatal MEDIUM: Remove 'option independant-streams' MINOR: sample: Add sha2([<bits>]) converter BUG/MEDIUM: compression: Set Vary: Accept-Encoding for compressed responses BUG/MINOR: mworker-prog: Fix segmentation fault during cfgparse BUG/MINOR: spoe: Fix memory leak if failing to allocate memory BUG/MINOR: log: Detect missing sampling ranges in config William Lallemand (3): BUG/MEDIUM: mworker: don't call the thread and fdtab deinit BUG/MEDIUM: mworker/cli: command pipelining doesn't work anymore BUG/MINOR: mworker/cli: don't output a \n before the response Willy Tarreau (15): DOC: this is a development branch again. BUILD: mworker: silence two printf format warnings around getpid() BUILD: makefile: use :space: instead of digits to count commits BUILD: makefile: adjust the sed expression of "make help" for solaris BUILD: makefile: do not rely on shell substitutions to determine git version BUG/MEDIUM: checks: unblock signals in external checks MINOR: pools: release the pool's lock during the malloc/free calls MINOR: pools: always pre-initialize allocated memory outside of the lock MINOR: pools: make the thread harmless during the mmap/munmap syscalls BUG/MEDIUM: fd/threads: fix excessive CPU usage on multi-thread accept MINOR: task: introduce work lists BUG/MAJOR: listener: fix thread safety in resume_listener() BUG/MINOR: mux-pt: do not pretend there's more data after a read0 BUG/MEDIUM: tcp-check: unbreak multiple connect rules again BUG/MEDIUM: threads: cpu-map designating a single thread/process are ignored ---