Hi,
HAProxy 2.6.23 was released on 2025/10/03. It added 35 new commits
after version 2.6.22.
As promised in the 2.6.23 announce, here is the usual description of bugs
fixed by this release.:
* The most important one is obviously the mjson JSON decoder issue
described in the previous mail. Decoding of numbers with large exponents
was eating a lot of CPU and could even trigger the watchdog and kill the
process. "json_query()", "jwt_header_query()", and "jwt_payload_query()"
converters was affected. This bug was assigned CVE-2025-11230 and
affected all versions featuring the JSON decoder, or 2.4 and above.
* In the QUIC part, Wrong error codes were used to missing or invalid
transport parameters. Some others were not rejected. It is now properly
handled.
* In both H2 and H3, the 'Z' character (in upper case) was not rejected as
expected from header field names. Thanks to @zhanhb, it now fixed.
* On H2, streams are now reset with NO_ERROR and not CANCEL when the
server responds before the end of the request and closes, making it
clear to the client that the response is valid and not an error.
* On H3, Information about :scheme pseudo-header were not properly
reported at the HTX level, preventing the H2 multiplexer to preserve it
on server side.
* For resolvers, an unexpected CPU usage could be experienced because
there was no delay on connection retries. It was observed with a
nameserver with invalid network settings. There is now a one-second delay
between two connections.
* In lua; Channel:data() and Channel:line() functions was fixed to respect
the documentation.
* On the CLI, no error was reported when too many arguments were passed for
a command. Instead, arguments above the limit (64 by default) were just
silently ignored.
* "send-proxy" and "send-proxy-v2" options are not relevant nor supported
on a ring server. It is now explicitly ignored and a warning is emitted.
Thanks everyone for your help !
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/2.6/src/
Git repository : https://git.haproxy.org/git/haproxy-2.6.git/
Git Web browsing : https://git.haproxy.org/?p=haproxy-2.6.git
Changelog : https://www.haproxy.org/download/2.6/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 (7):
MINOR: quic: extend return value during TP parsing
BUG/MINOR: quic: use proper error code on missing CID in TPs
BUG/MINOR: quic: use proper error code on invalid server TP
BUG/MINOR: quic: reject retry_source_cid TP on server side
BUG/MINOR: quic: use proper error code on invalid received TP value
BUG/MINOR: quic: fix TP reject on invalid max-ack-delay
BUG/MINOR: quic: reject invalid max_udp_payload size
Aurelien DARRAGON (5):
MINOR: applet: add appctx_schedule() macro
BUG/MINOR: dns: add tempo between 2 connection attempts for dns servers
BUG/MINOR: cli: fix too many args detection for commands
BUG/MINOR: sink: detect and warn when using "send-proxy" options with
ring servers
DOC: config: restore default values for resolvers hold directive
Christopher Faulet (10):
BUG/MINOR: cli: Issue an error when too many args are passed for a command
BUG/MINOR: mux-h1: Don't pretend connection was released for TCP>H1>H2
upgrade
BUG/MINOR: mux-h1: Fix trace message in h1_detroy() to not relay on
connection
BUG/MINOR: hlua: Fix Channel:data() and Channel:line() to respect
documentation
MEDIUM: hlua: Add function to change the body length of an HTTP Message
BUG/MINOR: mux-h2: Reset streams with NO_ERROR code if full response was
already sent
BUG/MINOR: h3: Set HTX flags corresponding to the scheme found in the
request
REGTESTS: Make the script testing conditional set-var compatible with
Vtest2
CI: vtest: Rely on VTest2 to run regression tests
REGTESTS: Explicitly allow failing shell commands in some scripts
Frederic Lecaille (2):
CLEANUP: quic: Useless BIO_METHOD initialization
MINOR: quic: Add useful error traces about qc_ssl_sess_init() failures
Lukas Tribus (1):
DOC: ring: refer to newer RFC5424
Valentine Krasnobaeva (2):
BUG/MINOR: limits: compute_ideal_maxconn: don't cap remain if
fd_hard_limit=0
MINOR: compiler: add __nonstring macro
Willy Tarreau (6):
DOC: config: recommend disabling libc-based resolution with resolvers
DOC: config: clarify some known limitations of the json_query() converter
BUG/CRITICAL: mjson: fix possible DoS when parsing numbers
BUILD: compiler: add a macro to detect if another one is set and equals 1
BUILD: compiler: fix __equals_1() on older compilers
BUILD: compiler: add a default definition for __has_attribute()
zhanhb (2):
BUG/MINOR: h2: forbid 'Z' as well in header field names checks
BUG/MINOR: h3: forbid 'Z' as well in header field names checks
--
Christopher Faulet