Hi,

HAProxy 3.3.1 was released on 2025/12/19. It added 45 new commits
after version 3.3.0.

Unlike what I said, the 2.8.17 was not the last release emitted this week.
The 3.3.1 was missing, while it was promized ! Following issues were fixed
by this release:

- In QUIC, HyStart++ algorithm for QUIC connections is now disabled for
  congestion control algorithms not supporting it. It caused crashes when
  when it was enabled with BBR for instance. The "quic-cc-algo" server
  directive allows to choose the congestion control algorithm for outgoing
  QUIC connections. And there were some fixes on the QUIC backend.

- A possible crash in H3 was fixed because a internal variable could be
  accesses while unallocated.

- In master-worker mode, an ambiguity about a flag was fixed. It has no
  impact on 3.1 and upper thanks to the master-worker refactoring that has
  occurred in 3.1 but that led to a file descriptor leak for duplicated unix
  stats sockets in the master process in 3.0 and lower.

- A typo in the "bc_settings_streams_limit" sample fetch function made it
  unavailable. This was fixed to accordingly to the name used in the
  configuration manual.

- An old bug form 2012 was fixed about the HTTP TUNNEL handling that causing
  tunnelled streams closed by the server to be closed on both sides at once
  and logging an error. And the timer used for "wait-for-body" action was
  not properly reset, causing some trouble with some following actions, like
  "pause".

- The "show proc" master-CLI command is no longer limited by the output
  buffer size and will now be able to list many processes.

- In SSL, an issue with the TLS sessions reuse was fixed. The SNI was not
  considered when a TLS session was reused. Because of this issue, it was
  possible to inherit from an old SNI for connection without SNI. Now, the
  SNI of the cached TLS session must match the one that will be used for the
  new connection. There was also an issue regarding the choice of the
  ALPN, especially when the ALPN for health-checks differed from the one
  used for regular traffic.

- An old bug, introduced in 2.2.0, about private idle connections attached
  to a session, leading to a crash, was fixed by reverting the offending
  commit.

- H2 backend: in some cases it was possible to continue to use a connection
  till the last stream ID permitted by the server. While this is
  undetectable by the server since it serves to process streams in flight,
  it's forbidden by the spec and not all parts handled it similarly in the
  code (some applied the client rule and others the server one depending how
  they were). The main impact is that after releasing the last allowed
  stream to a server, the connection was not set back to the idle pool but
  wasn't killed either, and a late activity (e.g. a shutdown) could trigger
  a BUG_ON() condition detecting this inconsistency and crash the
  process. Only 3.3 was affected by the BUG_ON() and it's not sure at this
  point whether any other effect could have happened on older versions. For
  this reason only 3.3 has the fix for now, others might follow later.

The rest is pretty minor, essentially doc updates.

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
   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-3.3.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy-3.3.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


---
Complete changelog :
Amaury Denoyelle (6):
      BUG/MEDIUM: h3: do not access QCS <sd> if not allocated
      BUG/MEDIUM: h3: fix access to QCS <sd> definitely
      Revert "MINOR: quic: use dynamic cc_algo on bind_conf"
      MINOR: quic: define quic_cc_algo as const
      MINOR: quic: extract cc-algo parsing in a dedicated function
      MINOR: quic: implement cc-algo server keyword

Christopher Faulet (15):
      BUG/MINOR: ssl: Don't allow to set NULL sni
      BUG/MINOR: log: Dump good %B and %U values in logs
      BUG/MEDIUM: http-ana: Don't close server connection on read0 in TUNNEL 
mode
      DOC: config: Fix description of the spop mode
      DOC: config: Improve spop mode documentation
      MEDIUM: quic: Add connection as argument when qc_new_conn() is called
      MINOR: ssl: Add a function to hash SNIs
      MINOR: ssl: Store hash of the SNI for cached TLS sessions
      MINOR: ssl: Compare hashes instead of SNIs when a session is cached
      MINOR: connection/ssl: Store the SNI hash value in the connection itself
      MEDIUM: tcpcheck/backend: Get the connection SNI before initializing SSL 
ctx
      BUG/MEDIUM: ssl: Don't reuse TLS session if the connection's SNI differs
      MEDIUM: ssl/server: No longer store the SNI of cached TLS sessions
      BUG/MEDIUM: http-ana: Properly detect client abort when forwarding 
response (v2)
      BUG/MEDIUM: stconn: Don't report abort from SC if read0 was already 
received

Frederic Lecaille (7):
      BUG/MINOR: quic/ssl: crash in ClientHello callback ssl traces
      BUG/MINOR: quic-be: handshake errors without connection stream closure
      MINOR: quic: Add useful debugging traces in qc_idle_timer_do_rearm()
      MINOR: quic: avoid code duplication in TLS alert callback
      BUG/MINOR: quic-be: missing connection stream closure upon TLS alert to 
send
      BUG/MINOR: quic: do not set first the default QUIC curves
      BUG/MINOR: quic-be: Missing keywords array NULL termination

Olivier Houchard (6):
      BUG/MEDIUM: ssl: Always check the ALPN after handshake
      MINOR: connections: Add a new CO_FL_SSL_NO_CACHED_INFO flag
      BUG/MEDIUM: ssl: Don't store the ALPN for check connections
      BUG/MEDIUM: ssl: Don't resume session for check connections
      BUG/MEDIUM: quic: Don't try to use hystart if not implemented
      BUG/MEDIUM: backend: Do not remove CO_FL_SESS_IDLE in assign_server()

Remi Tricot-Le Breton (1):
      BUG/MINOR: jwt: Missing "case" in switch statement

William Lallemand (4):
      BUG/MEDIUM: mworker/listener: ambiguous use of RX_F_INHERITED with shards
      DOC: configuration: ECH support details
      CLEANUP: mworker/cli: remove useless variable
      BUG/MINOR: mworker/cli: 'show proc' is limited by buffer size

Willy Tarreau (6):
      BUG/MEDIUM: connection: fix "bc_settings_streams_limit" typo
      BUG/MEDIUM: config: ignore empty args in skipped blocks
      DOC: config: mention clearer that the cache's total-max-size is mandatory
      DOC: config: reorder the cache section's keywords
      MINOR: h2/trace: emit a trace of the received RST_STREAM type
      BUG/MEDIUM: mux-h2: synchronize all conditions to create a new backend 
stream

--
Christopher Faulet



Reply via email to