Hi, HAProxy 3.0-dev2 was released on 2024/01/26. It added 70 new commits after version 3.0-dev1.
There's not that much in this version but it stabilizes a few issues that came with release 2.9 and since there are testers, better keep -dev in good shape. A new 2.9 will probably happen in one or two weeks with some further fixes for pending issues we're currently working on. Among the fixes here, I can cite a failure of QUIC in OpenSSL compatibility mode, and a rare risk of crash of the cache when using Vary. On the front of new stuff, we have: - an update of the deviceatlas addon to support the new version of the library. It slightly changes the build system and may possibly trigger a build issue when USE_DEVICEATLAS is set. I think it's OK now (it now passes on the CI) but those using it might want to check. - an improvement on the default certificate selection: till now, the default certificate was the first one mentioned on the bind line. This causes issues with sites that want to support both RSA and ECDSA. A new approach was brought, with an optional "default-crt" keyword that designates the default certs on the bind line, and its equivalent in the crt-list files designated by "*" in the name. This allows the right cert to be picked based on the desired algorithm. Of course the default behavior doesn't change. - the list of status codes that are increment the http_err_cnt and http_fail_cnt counters can now be changed with the global directives "http-err-codes" and "http-fail-codes". This has long been requested, both by those whose applications randomly return 500 that are not server failures, and those where 404 happen a lot and does not necessarily indicate a URL scanner. All of the 1xx-5xx range is permitted for both classes. - a new "glitches" counter was added to H2 front and back connections, and should progressively extend to all protocols and layers. It counts the various small anomalies that are not bugs nor attacks but that are abnormal enough to be counted, and which could indicate a faulty application or server when found at high rates on the backend side, or a heavily misbehaving client for the frontend side. For example, truncated prefaces and abuses of CONTINUATION frames are counted as such. The values are readable using a pair of sample fetch functions so that they could be reported in the logs or even trigger a reject. - QUIC built with latest aws-lc as the TLS library should now support 0-RTT. - various code spelling cleanups and doc fixes - and a few other more minor things. And that's about all. These days I noticed that everyone is busy with difficult bug reports, which also explains that the number of untriaged issues on GitHub is growing a bit. I hope it'll soon calm down so that we can all return to a more normal coding rate. We'll see :-) 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.0/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.0/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 Willy --- Complete changelog : Amaury Denoyelle (4): BUILD: quic: missing include for quic_tp BUG/MINOR: mux-quic: do not prevent non-STREAM sending on flow control MINOR: quic: extract qc_stream_buf free in a dedicated function BUG/MEDIUM: quic: remove unsent data from qc_stream_desc buf Aurelien DARRAGON (8): BUG/MINOR: map: list-based matching potential ordering regression REGTESTS: add a test to ensure map-ordering is preserved DOC: config: fix typo about map_*_key converters MINOR: map: mapfile ordering also matters for tree-based match types MINOR: vars: fix indentation in var_clear_buffer() DOC: configuration: fix set-dst in actions keywords matrix BUG/MINOR: hlua: fix uninitialized var in hlua_core_get_var() CLEANUP: hlua: fix indent, remove extra return in hlua_core_get_var() David Carlier (3): BUILD/MEDIUM: deviceatlas: addon build rework. DOC: deviceatlas: update to be in line with the v3 api. BUILD/MEDIUM: deviceatlas: updating the addon part. Emeric Brun (1): BUG/MEDIUM: cli: some err/warn msg dumps add LR into CSV output on stat's CLI Frederic Lecaille (10): BUG/MEDIUM: quic: keylog callback not called (USE_OPENSSL_COMPAT) MINOR: quic: Transport parameters encoding without version_information MINOR: quic: Enable early data at SSL session level (aws-lc) MINOR: ssl_sock: Early data disabled during SSL_CTX switching (aws-lc) MINOR: quic: Correctly wait for the completion of handshakes with early data (aws-lc) BUILD: quic: Fix build error when building QUIC against wolfssl. BUILD: quic: Fix build error when building QUIC against libressl. BUG/MINOR: quic: newreno QUIC congestion control algorithm no more available CLEANUP: quic: Remove unused CUBIC_BETA_SCALE_FACTOR_SHIFT macro. MINOR: quic: Stop hardcoding a scale shifting value (CUBIC_BETA_SCALE_FACTOR_SHIFT) Frédéric Lécaille (1): CLEANUP: quic: Double quic_dgram_parse() prototype declaration. Ilya Shipitsin (6): CI: codespell: ignore some words in URLs CI: codespell: add more words to whitelist CLEANUP: fix spelling of "occured" in src/h3.c CLEANUP: fix spelling of "elemt" CI: extend spell check white list CI: enable spell check on git push Mariam John (1): MINOR: ssl: Update ssl_fc_curve/ssl_bc_curve to use SSL_get0_group_name Miroslav Zagorac (2): MINOR: ot: logsrv struct becomes logger DOC: configuration: corrected description of keyword tune.ssl.ocsp-update.mindelay Remi Tricot-Le Breton (1): BUG/MEDIUM: cache: Fix crash when deleting secondary entry William Lallemand (10): CLEANUP: ssl: fix indentation in smp_fetch_ssl_fc_ec() CLEANUP: ssl: fix indentation in smp_fetch_ssl_fc_ec() (part 2) MEDIUM: ssl: allow multiple fallback certificate to allow ECDSA/RSA selection MEDIUM: ssl: generate '*' SNI filters for default certificates MEDIUM: ssl: does not use default_ctx for 'generate-certificate' option REORG: ssl: move 'generate-certificates' code to ssl_gencert.c DOC: configuration: update configuration on how to have multiple default certs MEDIUM: ssl: implements 'default-crt' keyword for bind Lines CI: github: update wolfSSL to 5.6.6 DOC: INSTALL: require at least WolfSSL 5.6.6 Willy Tarreau (23): DEV: patchbot: produce a verdict for too long commit messages DEV: phash: add a trivial perfect hash generator for integers OPTIM: http: simplify http_get_status_idx() using a hash CLEANUP: http: avoid duplicating literals in find_http_meth() MINOR: http: add infrastructure to choose status codes for err / fail MEDIUM: http_act: check status codes against the bit fields for err/fail MEDIUM: http: add the ability to redefine http-err-codes and http-fail-codes DEV: h2: add support for multiple flags in mkhdr DEV: h2: support hex-encoded data sequences in mkhdr BUG/MINOR: mux-h2: also count streams for refused ones BUG/MEDIUM: mux-h2: refine connection vs stream error on headers MINOR: mux-h2/traces: add a missing trace on connection WU with negative inc MINOR: mux-h2: add a counter of "glitches" on a connection MINOR: connection: add a new mux_ctl to report number of connection glitches MINOR: mux-h2: implement MUX_CTL_GET_GLITCHES MINOR: connection: add sample fetches to report per-connection glitches BUILD: stick-table: fix build error on 32-bit platforms BUG/MINOR: jwt: fix jwt_verify crash on 32-bit archs BUILD: quic: fix build error when using the compatibility layer BUILD: makefile: also define cmd_CXX to pretty-print C++ build commands BUILD: deviceatlas: remove unneeded depenency on libcurl / libzip BUILD: deviceatlas: fix empty "-I" left on CFLAGS Revert "CI: enable spell check on git push" ---