Hi, HAProxy 3.1-dev1 was released on 2024/06/14. It added 95 new commits after version 3.1-dev0.
Because Willy announced publicly I should managed a -dev1 before his return from vacations, I have no choice. So, faced with so much pressure, here is the first 3.1 dev release. After the feature freeze preceding the 3.0.0, the developments now slowly restart. Aurélien pushed several patchs related to the initial implementation of the "log-profile" feature as described in Github issue #401. While some directives such as "log-format", "log-format-sd", "error-log-format" or "log-tag" make it possible to configure log formatting globally or at the proxy level, it may be relevant to configure such settings as close as possible to the log endpoints, that is, per "log" directive. This is what "log-profile" section now offers when combined with a "log" directive. For now, the use of log-profiles is somewhat limited because we lack the ability to explicitly trigger the log building process at specific steps during the stream handling, but it should gain more traction over the time as the feature evolves and new mechanisms allowing the emission of logs at expected processing steps will be added. William, on his side, worked on improving the AWS-LC support, making closer and closer to something isofunctional to OpenSSL-1.1.1 but with QUIC support as a bonus. More we work on AWS-LC support, more it appears as one of the best alternative to OpenSSL. On this release, William added the support for ECDA+RSA certificate selection. Finally, you may note that our acme.sh fork to be able to update dynamically certificates without any reload was removed. The feature was merged in the mainstream project. The remaining is the bunch of usual bug fixes, documentation improvements, CI upgrades and cleanups here and there. It may be good to mention that two major bugs were fixed on the H1 multiplexer. A possible use-after-free on the H1 connection when a request was drained and an issue with the zero-copy data forwarding of the chunked messages. The ten first bytes of the first chunk could be crushed, depending on the timing. So the very early adopters and fans of the dev releases are highly encouraged to upgrade. Thanks everyone for your help. Enjoy ! Please find the usual URLs below : Site index : https://www.haproxy.org/ Documentation : https://docs.haproxy.org/ Wiki : https://github.com/haproxy/wiki/wiki Discourse : https://discourse.haproxy.org/ Slack channel : https://slack.haproxy.org/ Issue tracker : https://github.com/haproxy/haproxy/issues Sources : https://www.haproxy.org/download/3.1/src/ Git repository : https://git.haproxy.org/git/haproxy.git/ Git Web browsing : https://git.haproxy.org/?p=haproxy.git Changelog : https://www.haproxy.org/download/3.1/src/CHANGELOG Dataplane API : https://github.com/haproxytech/dataplaneapi/releases/latest Pending bugs : https://www.haproxy.org/l/pending-bugs Reviewed bugs : https://www.haproxy.org/l/reviewed-bugs Code reports : https://www.haproxy.org/l/code-reports Latest builds : https://www.haproxy.org/l/dev-packages --- Complete changelog : Amaury Denoyelle (8): BUG/MINOR: quic: prevent crash on qc_kill_conn() BUG/MINOR: quic: fix computed length of emitted STREAM frames BUG/MINOR: quic: ensure Tx buf is always purged BUG/MINOR: quic: fix padding of INITIAL packets OPTIM: quic: fill whole Tx buffer if needed MINOR: quic: refactor qc_build_pkt() error handling MINOR: quic: use global datagram headlen definition MINOR: quic: refactor qc_prep_pkts() loop Aurelien DARRAGON (44): MINOR: stktable: avoid ambiguous stktable_data_ptr() usage in cli_io_handler_table() BUG/MINOR: hlua: use CertCache.set() from various hlua contexts CLEANUP: hlua: fix CertCache class comment CLEANUP: hlua: use hlua_pusherror() where relevant BUG/MINOR: hlua: don't use lua_pushfstring() when we don't expect LJMP BUG/MINOR: hlua: fix unsafe hlua_pusherror() usage BUG/MINOR: hlua: prevent LJMP in hlua_traceback() CLEANUP: hlua: get rid of hlua_traceback() security checks BUG/MINOR: hlua: fix leak in hlua_ckch_set() error path CLEANUP: hlua: simplify ambiguous lua_insert() usage in hlua_ctx_resume() MINOR: log: fix "http-send-name-header" ignore warning message BUG/MINOR: proxy: fix server_id_hdr_name leak on deinit() BUG/MINOR: proxy: fix log_tag leak on deinit() BUG/MINOR: proxy: fix email-alert leak on deinit() BUG/MINOR: proxy: fix check_{command,path} leak on deinit() BUG/MINOR: proxy: fix dyncookie_key leak on deinit() BUG/MINOR: proxy: fix source interface and usesrc leaks on deinit() BUG/MINOR: proxy: fix header_unique_id leak on deinit() MINOR: proxy: add proxy_free_common() helper function BUG/MEDIUM: proxy: fix UAF with {tcp,http}checks logformat expressions MINOR: log: change wording in lf_expr_postcheck() error message BUG/MEDIUM: log: fix lf_expr_postcheck() behavior with default section CLEANUP: log/proxy: fix comment in proxy_free_common() DOC: config: move "hash-key" from proxy to server options DOC: config: add missing section hint for "guid" proxy keyword DOC: config: add missing context hint for new server and proxy keywords DOC: management: rename show stats domain cli "dns" to "resolvers" REORG: log: reorder send log helpers by dependency order MINOR: session: expose session_embryonic_build_legacy_err() function MEDIUM: log/session: handle embryonic session log within sess_log() MINOR: log: provide sending log context to process_send_log() when available MINOR: log: add log_orig_to_str() function MINOR: log: provide log origin in logformat expressions using '%OG' CLEANUP: log: remove ambiguous legacy comment for resolve_logger() MINOR: log/backend: always free parsing hints in resolve_logger() MINOR: log: make resolve_logger() static MINOR: log: provide proxy context to resolve_logger() MINOR: log: add __send_log_set_metadata_sd helper MINOR: log: add logger flags MINOR: log: add log-profile parsing logic MINOR: log: add log profile buildlines MEDIUM: log: handle log-profile in process_send_log() DOC: config: add documentation for log profiles REGTESTS: log: add a test for log-profile Christopher Faulet (9): BUG/MEDIUM: h1-htx: Don't state interim responses are bodyless MEDIUM: stconn: Be able to unblock zero-copy data forwarding from done_fastfwd BUG/MEDIUM: mux-quic: Unblock zero-copy forwarding if the txbuf can be released BUG/MEDIUM: mux-quic: Don't unblock zero-copy fwding if blocked during nego MINOR: mux-quic: Don't send an emtpy H3 DATA frame during zero-copy forwarding BUG/MAJOR: mux-h1: Properly copy chunked input data during zero-copy nego BUG/MINOR: mux-h1: Use the right variable to set NEGO_FF_FL_EXACT_SIZE flag BUG/MINOR: promex: Skip resolvers metrics when there is no resolver section BUG/MAJOR: mux-h1: Prevent any UAF on H1 connection after draining a request Ilia Shipitsin (6): CI: use "--no-install-recommends" for apt-get CI: switch to lua 5.4 CI: use USE_PCRE2 instead of USE_PCRE CI: VTest: accelerate package install a bit CI: speedup apt package install CI: FreeBSD: upgrade image, packages Tim Duesterhus (2): REGTESTS: Remove REQUIRE_VERSION=2.1 from all tests REGTESTS: Remove REQUIRE_VERSION=2.2 from all tests Valentine Krasnobaeva (2): DOC/MINOR: management: add missed -dR and -dv options DOC/MINOR: management: add -dZ option William Lallemand (20): DOC: replace the README by a markdown version ADMIN: acme.sh: remove the old acme.sh code DOC: configuration: add an example for keywords from crt-store DOC: add the FreeBSD status badge to README.md DOC: change the link to the FreeBSD CI in README.md BUG/MEDIUM: ssl: wrong priority whem limiting ECDSA ciphers in ECDSA+RSA configuration BUG/MEDIUM: ssl: bad auth selection with TLS1.2 and WolfSSL DOC: install: remove boringssl from the list of supported libraries DOC: internals: add a documentation about the master worker MINOR: ssl: add ssl_sock_bind_verifycbk() in ssl_sock.h REORG: ssl: move the SNI selection code in ssl_clienthello.c BUILD: ssl: fix build with wolfSSL CI: github: upgrade aws-lc to 1.29.0 Revert "CI: github: upgrade aws-lc to 1.29.0" MEDIUM: ssl: support for ECDA+RSA certificate selection with AWS-LC BUILD: ssl: disable deprecated functions for AWS-LC 1.29.0 MINOR: ssl: relax the 'ssl.default-dh-param' keyword parsing CI: github: upgrade aws-lc to 1.29.0 DOC: INSTALL: minimum AWS-LC version is v1.22.0 CI: github: do the AWS-LC weekly build with ERR=1 William Manley (1): BUG/MEDIUM: stconn/mux-h1: Fix suspect change causing timeouts Willy Tarreau (3): BUG/MINOR: cfgparse: remove the correct option on httpcheck send-state warning BUG/MINOR: tcpcheck: report correct error in tcp-check rule parser BUG/MINOR: tools: fix possible null-deref in env_expand() on out-of-memory -- Christopher Faulet