Hi,

HAProxy 3.3-dev3 was released on 2025/07/11. It added 80 new commits
after version 3.3-dev2.

That's too many 3s in the release, last time such a thing happened was
with 2.2-dev2 five years ago, that's 50% inflation in 5 years. Anyway.

This version addresses a number of issues affecting the HTTP client in
corner cases (handling of 1xx responses, responses received before end
of body upload etc), and a small number of QUIC-related issues (backend,
crashes and failures with OpenSSL 3.5 etc). OpenSSL 3.5.1 is now required
to properly use the native QUIC API in OpenSSL 3.5 (it changed between
the two to address some API issues).

Regarding the non-bugfix stuff, I'm seeing it spread approximately like
this:

  - the jwt_verify() converter now supports taking a certificate instead
    of a public key, which makes it compatible with dynamic updates. For
    this, the CLI's "commit ssl cert" command now accepts certificates
    without a private key.

  - the dns-accept-family now defaults to "auto" as planned in 3.2, so
    that machines lacking IPv6 connectivity stop learning IPv6 addresses
    from the DNS by default. Of course the previous mode remains available
    ("ipv4,ipv6").

  - stats: a new flag appears in "show stats typed", indicating whether
    the considered metric is volatile ("V"), thus specific to the process,
    or persistent ("P"), thus related to the service. This is in order to
    progress towards the ability to support persistent counters across
    reloads (stay calm, we're not there yet). For now the types are
    indicated, that's all.

  - the distro name is now collected during boot when available and placed
    into the postmortem struct for debugging. We'll also add it to panics
    with a few other info (haproxy version, kernel version) that should
    help figure if a reported crash happened as reported or differently
    (sometimes containers are playing with users' nerves for example).

  - as planned in last announce, a warning is now emitted if a mailers
    section is configured but not used, as it likely indicates an older,
    non-migrated setup.

  - a counter of added/freed patterns (acl/map lines) is reported in
    the process' stats ("show info") in order to detect leaks that can
    be caused by scripts repeatedly uploading entries while improperly
    purging previous ones.

  - TCP MD5 signatures are supported on listeners and servers. These can
    be needed for example if you plan to place haproxy between two BGP
    routers.

  - more progress on the QUIC backend, automatic alpn is set, TLS version
    being restricted to 1.3 only, improvement of the :scheme handling in
    h3, support for dynamic servers.

  - the req_ssl* sample fetch parsers now all rely on the new generic
    function "smp_client_hello_parse()" that Mariam contributed a while
    ago and that was finally merged!

  - DeviceAtlas: the build process was improved to support installation
    in custom locations, and some build hints were added in the doc.

  - some build and CI updates (build-ssl detects and supports QuicTLS's
    cmake build system, CI now building with QUIC on OpenSSL 3.5, added
    ubuntu-24 to the CI, improved coverity scan via DEBUG_STRICT=2), and
    as usual some regtests.

Also, those running reg-tests will need to update to the latest vtest2
(the instructions in the README under reg-tests are up-to-date). Commit
dc46782efa from July 4th works fine for me and addresses the QUIC failures
I was facing with an earlier version.

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
   Q&A from devs    : https://github.com/orgs/haproxy/discussions
   Sources          : https://www.haproxy.org/download/3.3/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.3/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 (3):
      MINOR: cfgparse: enforce QUIC MUX compat on server line
      MINOR: server: support QUIC for dynamic servers
      BUG/MINOR: h3: fix https scheme request encoding for BE side

Aurelien DARRAGON (9):
      MEDIUM: sink: change the sink mode type to PR_MODE_SYSLOG
      MEDIUM: server: move _srv_check_proxy_mode() checks from server init to 
finalize
      MINOR: server: move send-proxy* incompatibility check in 
_srv_check_proxy_mode()
      MINOR: mailers: warn if mailers are configured but not actually used
      BUG/MEDIUM: counters/server: fix server and proxy last_change mixup
      MEDIUM: server: add and use a separate last_change variable for internal 
use
      MEDIUM: proxy: add and use a separate last_change variable for internal 
use
      MINOR: counters: rename last_change counter to last_state_change
      MEDIUM: stats: add persistent state to typed output format

Christopher Faulet (18):
      BUG/MEDIUM: hlua: Forbid any L6/L7 sample fetche functions from lua 
services
      BUG/MEDIUM: mux-h2: Properly handle connection error during preface 
sending
      MINOR: proto-tcp: Add support for TCP MD5 signature for listeners and 
servers
      BUILD: cfgparse-tcp: Add _GNU_SOURCE for TCP_MD5SIG_MAXKEYLEN
      BUG/MINOR: proto-tcp: Take care to initialized tcp_md5sig structure
      BUG/MINOR: http-act: Fix parsing of the expression argument for pause 
action
      MINOR: proto-tcp: Register a feature to report TCP MD5 signature support
      BUG/MEDIUM: http-client: Don't wake http-client applet if nothing was 
xferred
      BUG/MEDIUM: http-client: Properly inc input data when HTX blocks are 
xferred
      BUG/MEDIUM: http-client: Ask for more room when request data cannot be 
xferred
      BUG/MEDIUM: http-client: Test HTX_FL_EOM flag before commiting the HTX 
buffer
      BUG/MINOR: http-client: Ignore 1XX interim responses in non-HTX mode
      BUG/MINOR: http-client: Reject any 101-switching-protocols response
      BUG/MEDIUM: http-client: Drain the request if an early response is 
received
      BUG/MEDIUM: http-client: Notify applet has more data to deliver until the 
EOM
      MINOR: h1-htx: Add function to format an HTX message in its H1 
representation
      BUG/MINOR: mux-h1: Use configured error files if possible for early H1 
errors
      BUG/MINOR: h1-htx: Don't forget to init flags in h1_format_htx_msg 
function

David Carlier (2):
      BUILD/MEDIUM: deviceatlas: fix when installed in custom locations.
      DOC: deviceatlas build clarifications

Frederic Lecaille (11):
      BUG/MINOR: quic-be: Wrong retry_source_connection_id check
      BUG/MEDIUM: quic: SSL/TCP handshake failures with OpenSSL 3.5
      BUG/MINOR: quic: Missing TLS 1.3 QUIC cipher suites and groups inits 
(OpenSSL 3.5 QUIC API)
      BUG/MINOR: quic-be: Malformed coalesced Initial packets
      MINOR: quic: Prevent QUIC backend use with the OpenSSL QUIC compatibility 
module (USE_OPENSS_COMPAT)
      MINOR: reg-tests: first QUIC+H3 reg tests (QUIC address validation)
      MINOR: quic-be: Set the backend alpn if not set by conf
      MINOR: quic-be: TLS version restriction to 1.3
      MINOR: quic: Prevent QUIC build with OpenSSL 3.5 new QUIC API version < 
3.5.1
      BUG/MEDIUM: quic: Crash after QUIC server callbacks restoration (OpenSSL 
3.5)
      REGTESTS: use two haproxy instances to distinguish the QUIC traces

Ilia Shipitsin (4):
      CI: set DEBUG_STRICT=2 for coverity scan
      CI: enable USE_QUIC=1 for OpenSSL versions >= 3.5.0
      CLEANUP: assorted typo fixes in the code, commits and doc
      BUILD: adjust scripts/build-ssl.sh to modern CMake system of QuicTLS

Mariam John (1):
      MINOR: ssl: Introduce new smp_client_hello_parse() function

Remi Tricot-Le Breton (11):
      BUG/MINOR: jwt: Copy input and parameters in dedicated buffers in 
jwt_verify converter
      DOC: Fix 'jwt_verify' converter doc
      MINOR: jwt: Rename pkey to pubkey in jwt_cert_tree_entry struct
      MINOR: jwt: Remove unused parameter in convert_ecdsa_sig
      MAJOR: jwt: Allow certificate instead of public key in jwt_verify 
converter
      MINOR: ssl: Allow 'commit ssl cert' with no privkey
      MINOR: ssl: Prevent delete on certificate used by jwt_verify
      REGTESTS: jwt: Add test with actual certificate passed to jwt_verify
      REGTESTS: jwt: Test update of certificate used in jwt_verify
      DOC: 'jwt_verify' converter now supports certificates
      CLEANUP: ssl: Rename ssl_trace-t.h to ssl_trace.h

Valentine Krasnobaeva (1):
      MINOR: debug: add distro name and version in postmortem

William Lallemand (13):
      MINOR: ssl: check TLS1.3 ciphersuites again in clienthello with recent 
AWS-LC
      BUG/MINOR: httpclient: wrongly named httpproxy flag
      MINOR: ssl/ocsp: stop using the flags from the httpclient CLI
      MEDIUM: httpclient: split the CLI from the actual httpclient API
      MEDIUM: httpclient: implement a way to use directly htx data
      MINOR: httpclient/cli: add --htx option
      BUG/MINOR: ssl: crash in ssl_sock_io_cb() with SSL traces and idle 
connections
      BUG/MINOR: ssl/ocsp: fix definition discrepancies with ocsp_update_init()
      MEDIUM: httpclient: add a Content-Length when the payload is known
      CI: github: add an OpenSSL 3.5.0 job
      CI: github: update the stable CI to ubuntu-24.04
      CI: github: update to OpenSSL 3.5.1
      CI: github: skip a ssl library version when latest is already in the list

Willy Tarreau (7):
      REGTESTS: restrict execution to a single thread group
      BUILD: dev/phash: remove the accidentally committed a.out file
      MINOR: pattern: add a counter of added/freed patterns
      MEDIUM: resolvers: switch dns-accept-family to "auto" by default
      BUG/MINOR: resolvers: don't lower the case of binary DNS format
      MINOR: resolvers: do not duplicate the hostname_dn field
      BUG/MINOR: listener: really assign distinct IDs to shards

---


Reply via email to