Hi,

HAProxy 3.2-dev17 was released on 2025/05/21. It added 45 new commits
after version 3.2-dev16.

During the more intense testing of this version, 3 scary but quite old
bugs were found, in relation with leastconn + saturated queues. And while
that makes adrenaline levels blow up during discovery, it also makes me
think that if they've been there for a while, it's probably because we're
now scraping the bottom of the barrel to find new bugs.

The recent watchdog fixes had reintroduced (in a different way) an issue
by which it was possible to see a stuck task in some cases when two
consecutive tasks had been interrupted by the alarm while working. This
issue is also present in 3.1.7 and explains some occasional watchdog
reports lately. This perfectly illustrates the principle of "backport
only after a period of observation" that we're placing in some sensitive
fixes' commit messages.

We've also addressed the detection of forbidden chars in the Host header,
and limited the number of peers updates processed at once (those having
huge buffers could get watchdogs on reload due to this).

While fixing a build warning on SLZ I noticed that we hadn't updated it,
and the updates were minor enough so better take them now. That may result
in slightly less CPU being used during compression with a slightly higher
compression ratio (though we're speaking about single percent here).

The QUIC TLS API was ported to OpenSSL 3.5 so that the compat layer is
not needed on this one. Thus it will work like with all other libs, except
that it's a different API. But at least it makes sense that haproxy's LTS
version supports the LTS openssl version released at the same time.

Lua now has its function to change the advertised body length of an HTTP
message for those who replace contents (see HTTPMessage.set_body_len()).

The previously discussed ability to disable killing misbehaving
connections when the CPU usage is low was implemented (see the global
"tune.glitches.kill.cpu-usage" setting). The idea is that if you configure
a glitches threshold but a misbehaving connection is harmless, sometimes
it's fine not to kill it.

The acme subsystem now sends a notification over the DPAPI ring to inform
it that certs had been renewed. This will permit the DPAPI to retrieve
them and save them on disk. There were a few more acme fixes and cleanups,
and some build fixes for less common archs/platforms. More doc cleanups
and updates, some tiny harmless code cleanups as well.

We've received an interesting patch that could theoretically improve
performance on large modern ARM systems (Graviton4 etc). I just need more
time to qualify the risk of performance degradation on current platforms,
if any, and any possible alternatives if this does happen (it's during
these tests that the leastconn bugs were spotted). This will now be for
3.3, with a possible later backport to 3.2 if we see that it does bring
a real benefit.

Overall I don't expect to see many more changes before the release on next
wednesday. At this point I'm not even seeing what else to test so I'm going
to revisit all announce messages to advance my work for the final announce.

We'll also have to emit at least a new 3.1, and likely a new 3.0 as well.
Not sure they'll be done before 3.2 though.

As usual, thanks to all testers and bug reporters!

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.2/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.2/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 (7):
      BUG/MINOR: quic: fix crash on quic_conn alloc failure
      BUG/MEDIUM: mux-quic: fix BUG_ON() on rxbuf alloc error
      CLEANUP: quic: remove unused cbuf module
      MINOR: quic: move function to check stream type in utils
      MINOR: quic: refactor handling of streams after MUX release
      MINOR: quic: add some missing includes
      MINOR: quic: adjust quic_conn-t.h include list

Aurelien DARRAGON (1):
      BUG/MINOR: sink: detect and warn when using "send-proxy" options with 
ring servers

Baptiste Assmann (1):
      EXAMPLES: lua: avoid screen refresh effect in "trisdemo"

Basha Mougamadou (1):
      DOC: configuration: explicit multi-choice on bind shards option

Christopher Faulet (2):
      MEDIUM: hlua: Add function to change the body length of an HTTP Message
      BUG/MEDIUM: stconn: Disable 0-copy forwarding for filters altering the 
payload

Frederic Lecaille (7):
      CLEANUP: quic: Useless BIO_METHOD initialization
      MINOR: quic: Add useful error traces about qc_ssl_sess_init() failures
      MINOR: quic: Allow the use of the new OpenSSL 3.5.0 QUIC TLS API (to be 
completed)
      MINOR: quic: implement all remaining callbacks for OpenSSL 3.5 QUIC API
      MINOR: quic: OpenSSL 3.5 internal QUIC custom extension for transport 
parameters reset
      MINOR: quic: OpenSSL 3.5 trick to support 0-RTT
      DOC: update INSTALL for QUIC with OpenSSL 3.5 usages

William Lallemand (5):
      DOC: management: change reference to configuration manual
      MINOR: acme: renewal notification over the dpapi sink
      DOC: management: update 'acme status'
      BUG/MEDIUM: acme: check if acme domains are configured
      BUG/MINOR: acme: fix formatting issue in error and logs

Willy Tarreau (21):
      BUG/MEDIUM: peers: also limit the number of incoming updates
      BUG/MINOR: h3: don't insert more than one Host header
      BUG/MEDIUM: h1/h2/h3: reject forbidden chars in the Host header field
      DOC: config: properly index "table and "stick-table" in their section
      BUILD: debug: mark ha_crash_now() as attribute(noreturn)
      IMPORT: slz: avoid multiple shifts on 64-bits
      IMPORT: slz: support crc32c for lookup hash on sse4 but only if requested
      IMPORT: slz: use a better hash for machines with a fast multiply
      IMPORT: slz: fix header used for empty zlib message
      IMPORT: slz: silence a build warning on non-x86 non-arm
      BUG/MAJOR: leastconn: do not loop forever when facing saturated servers
      BUG/MAJOR: queue: properly keep count of the queue length
      BUG/MAJOR: leastconn: never reuse the node after dropping the lock
      BUG/MEDIUM: wdt: always ignore the first watchdog wakeup
      CLEANUP: wdt: clarify the comments on the common exit path
      BUILD: ssl: avoid possible printf format warning in traces
      BUILD: acme: fix build issue on 32-bit archs with 64-bit time_t
      DOC: management: precise some of the fields of "show servers conn"
      DOC: watchdog: update the doc to reflect the recent changes
      CLEANUP: cfgparse: alphabetically sort the global keywords
      MINOR: glitches: add global setting "tune.glitches.kill.cpu-usage"

---


Reply via email to