Hi,

HAProxy 2.6.11 was released on 2023/03/17. It added 24 new commits
after version 2.6.10. This is the equivalent of the 2.7.5 release,
hence the similarly looking message.

This version primarily focuses on fixes:
- The security researchers team "CertiK Skyfall Team" found a possible
  crash in the QPACK decoder used by HTTP/3 due to an insufficiently
  checked index causing an out-of-bounds read.

- A recent fix for the idle connections was insufficient and/or incorrect,
  because it could result in a connection removal being counted twice, and
  the number of idle conns either growing a lot, or underflowing. The effect
  could be an excess of idle connections to a server possibly preventing new
  connections from establishing.

- Upon reload, health checks were not properly stopped in pure backends,
  that was only done in listen sections because only proxies having
  listeners were stopped. This has been the case since 2.4 despite the
  doc, and resolvers experienced the same since 2.6.

- Aurélien found that fc_dst_port() and fc_dst_is_local() could
  occasionally fail because a condition was placed on the ability to
  retrieve the source instead of the destination, so if the destination
  had already been retrieved it would work otherwise not.

- Fred addressed a few possible QUIC crashes related to invalid stream frame
  lengths triggering assertions.

- The H2 mux supports chaining multiple buffers at the connection level in
  order to store the data from many streams. However if a connection is
  severely congested, we could go back to the initial single-buffer situation
  where releasing a few kB of data would cause all waiting streams to be
  woken up, with only one of them succeeding in sending something. The
  symptoms are a lower H2 bit rate, a high CPU usage, an important presence
  of sc_conn_io_cb() in the run queue in "show tasks" (typically 90% of
  places) and 5-20 times more calls to sc_conn_io_cb() from
  h2_resume_each_sending_h2s() than other ones in "show profiling tasks".
  The correct way of proceeding consists in only restarting streams once
  the ring of connection buffers goes down to a single buffer. This also
  reduces memory usage under congestion.

- The recent fix for multiple "bind fd@0" that could crash on start was
  finally backported.

- The H2 mux was always sending its data using short SSL records, which
  explains why the performance was not as good as with HTTP/1. The reason
  is that the dynamic SSL records predates the muxes, and that the
  mechanism involved to use them was moved to the mux-H1 during the
  transition, without the mux-H2 being aware that there was something to
  be done. Now we continue to use small records when sending single
  buffers, but we use large records when sending more than one record,
  indicating large objects are being downloaded in parallel or that the
  link is congested.

- The H2 mux could sometimes crash when detaching a stream on a congested
  connection with no client timeout.

- Some rare bind errors on UNIX sockets were not correctly reported on
  startup.

And there were a few tiny improvements as well:
  - the H2 traces can now dump H2 headers (useful for debugging)

  - a few more fields are printed in "show fd"

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/2.6/src/
   Git repository   : https://git.haproxy.org/git/haproxy-2.6.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy-2.6.git
   Changelog        : https://www.haproxy.org/download/2.6/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 :
Aurelien DARRAGON (4):
      BUG/MINOR: tcp_sample: fix a bug in fc_dst_port and fc_dst_is_local 
sample fetches
      BUG/MINOR: proto_ux: report correct error when bind_listener fails
      BUG/MINOR: protocol: fix minor memory leak in protocol_bind_all()
      BUG/MINOR: sock_unix: match finalname with tempname in sock_unix_addrcmp()

Christopher Faulet (7):
      BUG/MEDIUM: proxy: properly stop backends on soft-stop
      BUG/MEDIUM: resolvers: Properly stop server resolutions on soft-stop
      DEBUG: cli/show_fd: Display connection error code
      DEBUG: ssl-sock/show_fd: Display SSL error code
      BUG/MEDIUM: connection: Preserve flags when a conn is removed from an 
idle list
      BUG/MINOR: mux-h2: Fix possible null pointer deref on h2c in 
_h2_trace_header()
      BUG/MEDIUM: spoe: Don't set the default traget for the SPOE agent frontend

Frédéric Lécaille (2):
      BUG/MINOR: quic: Missing STREAM frame length updates
      BUG/MINOR: quic: Missing STREAM frame data pointer updates

Willy Tarreau (11):
      BUG/MINOR: mux-h2: make sure the h2c task exists before refreshing it
      MINOR: buffer: add br_single() to check if a buffer ring has more than 
one buf
      BUG/MEDIUM: mux-h2: only restart sending when mux buffer is decongested
      BUG/MINOR: mux-h2: set CO_SFL_STREAMER when sending lots of data
      BUG/MEDIUM: listener: duplicate inherited FDs if needed
      MINOR: h2: add h2_phdr_to_ist() to make ISTs from pseudo headers
      MEDIUM: mux-h2/trace: add tracing support for headers
      MINOR: trace: add a TRACE_ENABLED() macro to determine if a trace is 
active
      MINOR: trace: add a trace_no_cb() dummy callback for when to use no 
callback
      MINOR: trace: add the long awaited TRACE_PRINTF()
      BUG/MAJOR: qpack: fix possible read out of bounds in static table

---

Reply via email to