Hi,

HAProxy 2.7-dev4 was released on 2022/08/20. It added 80 new commits
after version 2.7-dev3.

Well, it's clearly visible that it's still the vacation period, as there
is very few new stuff, almost only bug fixes! The build and bug fixes
spread about everywhere and correspond to those that landed into 2.6.3,
plus a number of QUIC-related stability issues.

Now what's left aside bug fixes:

- a new CLI command "add ssl ca-file" allows to append new certificates
  to an existing ca-file instead of replacing them all at once. This can
  be used as a workaround for the limited size of what may be uploaded
  via "set ssl ca-file" (one tune.bufsize max).

- the table_expire() and table_idle() converters can return the remaining
  time before a key will expire in a table, as well as how long ago a
  given key was last seen. That's useful for rate limiting in order to
  send a retry-after header, and may also be used to revalidate credentials,
  present a captcha, or just kick a user session during a version rollover
  for example.

- for debugging purposes, rings can now be backed by a file. Technically
  speaking, the storage area may now be allocated from an mmapped file
  instead of using malloc(). This is convenient for post-mortem analysis
  where traces of last events are sometimes needed, but the traffic makes
  them problematic to retrieve (and chaining socat to tail just for this
  eats a lot of resources). Thus in this mode there's nothing to tail nor
  read, just let the ring accumulate traces, and once the process dies,
  pass it through a new tool ("haring") that will dump all the events.
  This *may* be used by experienced admins for advanced debugging, but
  please do not complain if you back it on an on-disk file and it slows
  down your traffic due to swapping or disk I/Os.

- multiple HTTP/3 cookie headers are now merged, as required by the
  spec. This was first reported by Gabriel Tzagkarakis in issue #1818,

- QUIC traces were significantly reworked to be much more precise (hence
  more verbose) but they make analysis much more efficient and accurate.

- more debugging facilities: now the pool allocations are also tracked
  by the memory profiler, so that it is easier to spot a leak or some
  code parts using too much memory. The CPU overhead is not big, roughly
  3-5% compared to the profiler before this change, which is nothing
  compared to the improved observability. The memstats advanced debugger
  now also reports function names and pool usage as well.

- better handling of stream closures and error in QUIC, QPACK and H3

- some early QUIC code that relies on expensive openssl calls was made
  more efficient by keeping the crypto context to avoid repeated memory
  allocations. As much as possible some parts using pool_zalloc() were
  turned to the less expensive pool_alloc(). The application send()
  path was simplified. Finally some locks in the Rx code that were no
  longer needed could be removed. So overall the QUIC code should eat a
  little bit less CPU.

Those running development versions on their servers may want to upgrade
to this one, because the low amount of changes compared to the high number
of fixes should give it a stability level that is above average.

Oh, and as a reminder, there are only 2 weeks left to submit a proposal
for a talk to the haproxyconf (https://www.haproxyconf.com/). If you think
you're having an unusual use case, or if some friends or coworkers said
"oh that's smart" when you explained your setup, you should really consider
putting your shyness aside and proposing a presentation ;-)

Please find the usual URLs below :
   Site index       : http://www.haproxy.org/
   Documentation    : http://docs.haproxy.org/
   Wiki             : https://github.com/haproxy/wiki/wiki
   Discourse        : http://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Sources          : http://www.haproxy.org/download/2.7/src/
   Git repository   : http://git.haproxy.org/git/haproxy.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy.git
   Changelog        : http://www.haproxy.org/download/2.7/src/CHANGELOG
   Pending bugs     : http://www.haproxy.org/l/pending-bugs
   Reviewed bugs    : http://www.haproxy.org/l/reviewed-bugs
   Code reports     : http://www.haproxy.org/l/code-reports
   Latest builds    : http://www.haproxy.org/l/dev-packages

Willy
---
Complete changelog :
Amaury Denoyelle (26):
      CLEANUP: mux-quic: remove loop on sending frames
      MINOR: quic: replace custom buf on Tx by default struct buffer
      MINOR: quic: release Tx buffer on each send
      MINOR: quic: refactor datagram commit in Tx buffer
      MINOR: quic: skip sending if no frame to send in io-cb
      BUG/MINOR: mux-quic: open stream on STOP_SENDING
      BUG/MINOR: quic: fix crash on handshake io-cb for null next enc level
      MINOR: mux-quic: adjust enter/leave traces
      MINOR: mux-quic: define protocol error traces
      CLEANUP: mux-quic: adjust traces level
      MINOR: mux-quic: define new traces
      BUG/MEDIUM: mux-quic: fix crash due to invalid trace arg
      BUG/MINOR: mux-quic: fix crash with traces in qc_detach()
      CLEANUP: exclude haring with .gitignore
      MINOR: quic: adjust quic_frame flag manipulation
      MINOR: h3: report error on control stream close
      MINOR: qpack: report error on enc/dec stream close
      BUG/MEDIUM: mux-quic: reject uni stream ID exceeding flow control
      MINOR: mux-quic: adjust traces on stream init
      MINOR: mux-quic: add missing args on some traces
      MINOR: quic: refactor application send
      BUG/MINOR: quic: do not notify MUX on frame retransmit
      BUG/MEDIUM: quic: fix crash on MUX send notification
      REORG: h2: extract cookies concat function in http_htx
      REGTESTS: add test for HTTP/2 cookies concatenation
      MEDIUM: h3: concatenate multiple cookie headers

Emeric Brun (2):
      BUG/MAJOR: log-forward: Fix log-forward proxies not fully initialized
      BUG/MAJOR: log-forward: Fix ssl layer not initialized on bind even if 
configured

Frédéric Lécaille (21):
      BUG/MEDIUM: quic: Wrong packet length check in qc_do_rm_hp()
      MINOR: quic: Too much useless traces in qc_build_frms()
      BUG/MEDIUM: quic: Missing AEAD TAG check after removing header protection
      MINOR: quic: Replace pool_zalloc() by pool_malloc() for fake datagrams
      MEDIUM: quic: xprt traces rework
      MINOR: quic: Remove useless lock for RX packets
      BUG/MINOR: quic: Possible infinite loop in 
quic_build_post_handshake_frames()
      CLEANUP: quic: Remove trailing spaces
      BUG/MEDIUM: quic: Possible use of uninitialized <odcid> variable in 
qc_lstnr_params_init()
      BUG/MEDIUM: quic: Wrong use of <token_odcid> in qc_lsntr_pkt_rcv()
      BUG/MINOR: quic: memleak on wrong datagram receipt
      BUG/MINOR: quic: MIssing check when building TX packets
      BUG/MINOR: quic: Wrong status returned by qc_pkt_decrypt()
      MINOR: stick-table: Add table_expire() and table_idle() new converters
      BUG/MINOR: quic: Missing initializations for ducplicated frames.
      BUG/MINOR: quic: Possible crashes when dereferencing ->pkt quic_frame 
struct member
      MINOR: quic: Add frame addresses to QUIC_EV_CONN_PRSAFRM event traces
      BUG/MINOR: quic: Wrong splitted duplicated frames handling
      MINOR: quic: Add the QUIC connection to mux traces
      MINOR: quic: Trace fix in qc_release_frm()
      MINOR: quic: Add reusable cipher contexts for header protection

Mateusz Malek (1):
      BUG/MEDIUM: http-ana: fix crash or wrong header deletion by 
http-restrict-req-hdr-names

William Lallemand (3):
      BUG/MINOR: ssl/cli: error when the ca-file is empty
      MINOR: ssl: handle ca-file appending in cafile_entry
      MINOR: ssl/cli: implement "add ssl ca-file"

Willy Tarreau (27):
      MINOR: debug: make the mem_stats section aligned to void*
      MINOR: debug: store and report the pool's name in struct mem_stats
      MINOR: debug: also store the function name in struct mem_stats
      MINOR: debug/memstats: automatically determine first column size
      MINOR: debug/memstats: permit to pass the size to free()
      BUG/MEDIUM: quic: always remove the connection from the accept list on 
close
      BUG/MEDIUM: poller: use fd_delete() to release the poller pipes
      BUG/MEDIUM: task: relax one thread consistency check in task_unlink_wq()
      BUILD: stconn: fix build warning at -O3 about possible null sc
      BUG/MEDIUM: ring: fix too lax 'size' parser
      BUILD: ring: forward-declare struct appctx to avoid a build warning
      MINOR: ring: support creating a ring from a linear area
      MINOR: ring: add support for a backing-file
      DEV: haring: add a simple utility to read file-backed rings
      DEV: haring: support remapping LF in contents with CR VT
      BUILD: sink: replace S_IRUSR, S_IWUSR with their octal value
      MINOR: ring: archive a previous file-backed ring on startup
      MINOR: memprof: export the minimum definitions for memory profiling
      MINOR: pool/memprof: report pool alloc/free in memory profiling
      MINOR: pools/memprof: store and report the pool's name in each bin
      MINOR: chunk: inline alloc_trash_chunk()
      MINOR: applet: add a function to reset the svcctx of an applet
      BUG/MEDIUM: cli: always reset the service context between commands
      BUG/MEDIUM: mux-h2: do not fiddle with ->dsi to indicate demux is idle
      MINOR: mux-h2/traces: report transition to SETTINGS1 before not after
      MINOR: mux-h2: make streams know if they need to send more data
      BUG/MINOR: mux-h2: send a CANCEL instead of ES on truncated writes

---

Reply via email to