Hi,
HAProxy 3.0.3 was released on 2024/07/11. It added 42 new commits
after version 3.0.2.
This version closes the list of pending issues for 3.0. Fixed in this
release are:
- a QUIC bug affecting 3.0 and above only, by which can trigger a BUG_ON
(hence a crash) sometimes when trying to mix a large initial packet
with a small 1-RTT short packet in the same datagram ;
- a bug in the bwlim filter that can make it forget to update its
timeout and loop fast when woken up with nothing to forward ;
- the lack of filtering of empty transfer-encoding headers in the H1 mux
that was reported by Ben Kallus ;
- the insufficient syntax checks on :method and :scheme H3 headers that
was reported by Yuki Mogi ;
- a hang on lua CLI applets when trying to deal with their own buffers ;
- a possible crash in peers code due to a synchronization issue that is
occasionally triggered by one of the regtests (GH #2629) ;
- a possible crash in deinit() (when quitting/reloading) when using e-mail
alerts after a fix that went into 3.0.2 ;
- a rare but possible deadlock (and crash) in QUIC after a recent fix for
a race condition in the CID tree, that also went into 3.0.2 ;
- an unreproduced race condition affecting the QUIC CID tree. The impact
might be a possible crash but it was only found in code review and never
reported nor reproduced ;
- a remaining issue in DNS resolution timeout/error that may cause some
flapping due to the server's address not being fully wiped ;
- a subtle race between server address change and server removal that
may sometimes try to update a just deleted server due to isolation
starting after the lookup and implicitly giving control back when
starting ;
- an issue in SPOE that can cause a thread to refrain from creating an
applet to connect outside, causing failures on requests processed on
this thread ;
- a race in stick-tables starting from 2.9 where an element may be
accessed immediately after decrementing the refcount, sometimes
allowing it to be purged in parallel and causing crashes (GH #2611).
- and the rest is a bunch of small fixes for less impacting or likely
bugs.
Some might have been waiting on 3.0.1 after seeing that 3.0.2 got a few
incomplete or unstable fixes. If you're on 3.0, 3.0.3 definitely is the
one to start with. Of course, I'm always having a thought for those
reading that in the future when I'm writing things like this, but really
it's what 3.0.0 ought to have been, so please don't wait to upgrade,
particularly if you've experienced issues recently.
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-3.0.git/
Git Web browsing : https://git.haproxy.org/?p=haproxy-3.0.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 (13):
BUG/MAJOR: quic: fix padding with short packets
SCRIPTS: git-show-backports: do not truncate git-show output
BUG/MINOR: h3: fix crash on STOP_SENDING receive after GOAWAY emission
BUG/MINOR: mux-quic: fix crash on qcs SD alloc failure
BUG/MINOR: h3: fix BUG_ON() crash on control stream alloc failure
BUG/MINOR: quic: fix BUG_ON() on Tx pkt alloc failure
BUG/MEDIUM: h3: ensure the ":method" pseudo header is totally valid
BUG/MEDIUM: h3: ensure the ":scheme" pseudo header is totally valid
BUG/MEDIUM: quic: fix race-condition in quic_get_cid_tid()
BUG/MINOR: quic: fix race condition in qc_check_dcid()
BUG/MINOR: quic: fix race-condition on trace for CID retrieval
BUG/MEDIUM: server: fix race on server_atomic_sync()
DEV: flags/quic: decode quic_conn flags
Aurelien DARRAGON (8):
BUG/MINOR: log: fix broken '+bin' logformat node option
DEBUG: hlua: distinguish burst timeout errors from exec timeout errors
BUG/MEDIUM: proxy: fix email-alert invalid free
DOC: management: document ptr lookup for table commands
DOC: api/event_hdl: small updates, fix an example and add some precisions
BUG/MINOR: hlua: report proper context upon error in
hlua_cli_io_handler_fct()
BUG/MINOR: server: fix first server template name lookup UAF
BUG/MEDIUM: server/dns: prevent DOWN/UP flap upon resolution timeout or
error
Christopher Faulet (9):
BUG/MEDIUM: stick-table: Decrement the ref count inside lock to kill a
session
BUG/MINOR: promex: Remove Help prefix repeated twice for each metric
BUG/MEDIUM: hlua/cli: Fix lua CLI commands to work with applet's buffers
BUG/MEDIUM: peers: Fix crash when syncing learn state of a peer without
appctx
BUG/MINOR: h1: Fail to parse empty transfer coding names
BUG/MINOR: h1: Reject empty coding name as last transfer-encoding value
BUG/MEDIUM: h1: Reject empty Transfer-encoding header
BUG/MEDIUM: spoe: Be sure to create a SPOE applet if none on the current
thread
BUG/MEDIUM: bwlim: Be sure to never set the analyze expiration date in
past
Valentine Krasnobaeva (2):
MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD
DOC: configuration: update maxconn description
William Lallemand (6):
REGTESTS: ssl: fix some regtests 'feature cmd' start condition
DOC: configuration: fix alphabetical order of bind options
DOC: configuration: add details about crt-store in bind "crt" keyword
DOC: configuration: more details about the master-worker mode
BUG/MINOR: jwt: don't try to load files with HMAC algorithm
BUG/MINOR: jwt: fix variable initialisation
Willy Tarreau (4):
DEV: flags/show-fd-to-flags: adapt to recent versions
MINOR: activity: make the memory profiling hash size configurable at
build time
BUG/MEDIUM: quic: fix possible exit from qc_check_dcid() without unlocking
Revert "MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD"
---