Hi,

HAProxy 3.2-dev10 was released on 2025/04/11. It added 46 new commits
after version 3.2-dev9.

Nothing really outstanding this week. A few bugs were addressed, the most
notable ones being:
  - peers: it was possible to learn entries from peers which expire after
    the locally configured expiration, causing bad entries to be very
    difficult to eliminate from a cluster. Now the end date it checked and
    the locally-configured one serves as a bound.

  - regsub() converter: Aleandro Prudenzano of Doyensec and Edoardo Geraci
    of Codean Labs found a risk of buffer overflow when replacing patterns
    multiple times at once (multi-reference) with longer ones. The risk is
    quite low since such configs are quite unlikely and in the rare cases
    they will happen, the replacement will involve static contents, thus
    essentially a risk of crash. Regardless, it is a bug and it's now
    fixed. CVE-2025-32464 was filed for this. It affects all versions so
    the fix will be backported and we'll take this opportunity for making
    a new series of stable versions.

  - there was still a case where a forced shutdown on a stream could freeze
    it, it's now fixed.

A new warning was added for crt-lists to report a config issue where only
negative filters were used in crt-lists, which confusingly does nothing.
However, since we normally don't add warnings between non-LTS and the
following LTS in order to guarantee a smooth upgrade, we'll only turn it
to a diag warning in 3.2 and we'll turn it back to a real warning in 3.3.

The new in-line certificate declaration for frontends added in 3.2-dev
with the "crt" keyword are now replaced with "ssl-f-use" followed by
"crt". The rationale for this is that at some point this will permit to
configure certificates without having a preliminary one (for use with
ACME). Some extra ACME updates are already pending on this point and
will be available for 3.2-dev11.

Health checks now support being sent over idle connections when the
server line has the "check-reuse-pool" keyword. While one use case may
be to save SSL handshakes for some application servers, actually the
main target is the reverse-http architecture where it will be possible
to check the servers behind a reverse connection.

The Lua API got a few additions such as core.wait() and try_receive(),
which make it a bit easiler to implement non-blocking programs.

The "show events" CLI command now supports "-0" to request that events
are delimited with a \0 instead of a line break, this allows to use rings
to emit multi-line events to their watchers (similar to xargs -0). One
predicted use case will be to pass notifications to the dataplane API.

Aside this, there were some internal changes such as a cleanup of the
proxies initialization/deinitialization code to split alloc/dealloc
from initialization and avoid manually initializing them everywhere. The
rest are the usual cleanups, CI updates, build fixes and doc cleanups.

There's still some stuff already pending and coming soon (just the time
to finish some commit messages I guess):
  - a bidirectional mode for master-cli commands forwarded to workers
    allowing to call blocking commands such as "show events" or "wait"
  - a full batch of ACME updates
  - a few fixes
  - idle-ping to check idle H2 connections
  - better scalability for the round-robin algo

I'm also trying to fix some rare cases of deadlock in the watchdog
warnings. It's complicated because two signal handlers are being used
in parallel, and this is hard to follow and needs to be simplified. The
first attempt is not as positive as I hoped but I'll get back to this
so that we can definitely put an end to this issue and backport the
fixes.

But all these pending things must not be a justification for not testing
dev10 :-)

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 (5):
      MINOR: backend: mark srv as nonnull in alloc_dst_address()
      BUG/MINOR: server: ensure check-reuse-pool is copied from default-server
      MINOR: server: activate automatically check reuse for rhttp@ protocol
      MINOR: check/backend: support conn reuse with SNI
      MINOR: check: implement check-pool-conn-name srv keyword

Aurelien DARRAGON (20):
      MINOR: task: add thread safe notification_new and notification_wake 
variants
      BUG/MINOR: hlua_fcn: fix potential UAF with Queue:pop_wait()
      MINOR: hlua_fcn: register queue class using hlua_register_metatable()
      MINOR: hlua: add core.wait()
      MINOR: hlua: core.wait() takes optional delay paramater
      MINOR: hlua: split hlua_applet_tcp_recv_yield() in two functions
      MINOR: hlua: add AppletTCP:try_receive()
      MINOR: hlua_fcn: add Queue:alarm()
      MEDIUM: task: make notification_* API thread safe by default
      CLEANUP: log: adjust _lf_cbor_encode_byte() comment
      BUG/MINOR: log: fix CBOR encoding with LOG_VARTEXT_START() + 
lf_encode_chunk()
      DEV: h2: fix h2-tracer.lua nil value index
      BUG/MINOR: hlua: fix invalid errmsg use in hlua_init()
      MINOR: proxy: add setup_new_proxy() function
      MINOR: checks: mark CHECKS-FE dummy frontend as internal
      MINOR: flt_spoe: mark spoe agent frontend as internal
      MEDIUM: tree-wide: avoid manually initializing proxies
      MINOR: proxy: add deinit_proxy() helper func
      MINOR: checks: deinit checks_fe upon deinit
      MINOR: flt_spoe: deinit spoe agent proxy upon agent release

Christopher Faulet (2):
      BUG/MEDIUM: stream: Fix a possible freeze during a forced shut on a stream
      MEDIUM: stream: Save SC and channel flags earlier in process_steam()

Emeric Brun (2):
      BUG/MINOR: peers: fix expire learned from a peer not converted from ms to 
ticks
      BUG/MEDIUM: peers: prevent learning expiration too far in futur from 
unsync node

Ilia Shipitsin (3):
      CI: spell check: allow manual trigger
      CI: codespell: add "pres" to spellcheck whitelist
      CLEANUP: assorted typo fixes in the code, commits and doc

Olivier Houchard (1):
      TESTS: Fix build for filltab25.c

William Lallemand (6):
      REORG: ssl: move curves2nid and nid2nist to ssl_utils
      MEDIUM: ssl: replace "crt" lines by "ssl-f-use" lines
      DOC: configuration: replace "crt" by "ssl-f-use" in listeners
      MEDIUM: ssl/crt-list: warn on negative wildcard filters
      MEDIUM: ssl/crt-list: warn on negative filters only
      DOC: configuration: rework the crt-list section

Willy Tarreau (7):
      CLEANUP: atomics: remove support for gcc < 4.7
      CLEANUP: atomics: also replace __sync_synchronize() with 
__atomic_thread_fence()
      BUILD: atomics: fix build issue on non-x86/non-arm systems
      BUG/MEDIUM: sample: fix risk of overflow when replacing multiple regex 
back-refs
      MINOR: ring: support arbitrary delimiters through ring_dispatch_messages()
      MINOR: ring/cli: support delimiting events with a trailing \0 on "show 
events"
      BUG/MINOR: backend: do not use the source port when hashing clientip

---


Reply via email to