Change8

v3.3-dev8

Breaking Changes
📦 haproxyView on GitHub →
1 breaking12 features🐛 59 fixes🔧 39 symbols

Summary

This release introduces several bug fixes and minor improvements across various components including QUIC, HTTP analysis, and applet functionality. It also includes enhancements to connection management and statistics reporting.

⚠️ Breaking Changes

  • The `srv_init()` function has been split into `srv_preinit()` and `srv_postinit()`. Code that previously called `srv_init()` will need to be updated to call the new functions in the correct order.

Migration Steps

  1. Update code that calls `srv_init()` to use `srv_preinit()` and `srv_postinit()` in the correct order.

✨ New Features

  • Applets can now rely on an applet flag to detect the new API.
  • Added a function to test applet flags from the appctx.
  • Added a flag to indicate if an applet is using HTX buffers.
  • Made some applet functions HTX aware.
  • Set .rcv_buf and .snd_buf functions on default applets if not set.
  • Added a new `curr_sess_idle_conns` server counter.
  • Extended the output of `show servers conn`.
  • Introduced the `shm-stats-file` directive for shared memory statistics files.
  • Processes now share the same clock source from `shm-stats-file`.
  • Added process slot management for shm stats files.
  • Stats counters are now stored and preloaded as shm file objects.
  • Added `ALWAYS_PAD()` macro.

🐛 Bug Fixes

  • Fixed a crash on idle-ping due to unwanted ABORT_NOW in mux-h2.
  • Fixed missing Initial packet number space discarding in quic-be.
  • Fixed a crash after backend CID allocation failures in quic-be.
  • Applied ssl-f-use on every "ssl" bind.
  • Removed READ/WRITE events on channels after analysers eval in stream.
  • Fixed fd leak at error path in dns_connect_nameserver.
  • Reset padding when building GSO datagrams in quic.
  • Do not emit probe data if CONNECTION_CLOSE requested in quic.
  • Fixed INITIAL padding with probing packet only in quic.
  • Don't coalesce probing and ACK packet of same type in quic.
  • Fixed typo in http_res_get_intercept_rule in http_ana.
  • Handled yield for "stats http-request" evaluation in http_ana.
  • Rejected connection attempts from a non-spop frontend in mux-spop.
  • Improved error detection in SPOE applet on client abort in spoe.
  • Aborted config parsing on fatal errors for post parsing hooks in haproxy.
  • Avoided crashes when releasing Initial pktns in quic-be.
  • Reordered fragmented RX CRYPTO frames by their offsets in quic.
  • Traced with non initialized qcc in mux-quic.
  • Set arg_list->kw to aclkw->kw string literal if aclkw is found in acl.
  • Fixed startup and reload on macOS in mworker.
  • Rearranged union list members in connection.
  • Removed extra session_unown_conn() on reverse in connection.
  • Displayed failure reason on wait command in cli.
  • Decremented session idle_conns on del server in server.
  • Do not access conn after idle list insert in mux-quic.
  • Closed new idle conns if server in maintenance in server.
  • Closed new idle conns if server in maintenance in session.
  • Cleaned up idle conns for server in maint already stopped in server.
  • Enforced thread-safety for private idle conns in muxes.
  • Reinserted BE priv conn into sess on IO completion in conn/muxes/ssl.
  • Removed BE priv idle conn from sess on IO in conn/muxes/ssl.
  • Enforced thread-safety of backend idle conns in mux-quic.
  • Fixed ignoring return value of 'read' in mworker build.
  • Adjusted takeover with buf_wait interaction in muxes.
  • Fixed build due to missing stat enum definition in stats.
  • Fixed crash on reload during emission in mux-quic.
  • Added ASSUME_NONNULL() prior to _srv_add_idle in conn/muxes/ssl.
  • Duplicate healthcheck's alpn inherited from default server in server.
  • Duplicate healthcheck's sni inherited from default server in server.
  • Properly detected overwritten matching method in acl.
  • Added OOM checks for calloc() in filter_count_srv_status() and filter_count_url() in halog.
  • Added OOM checks for calloc() and malloc() in logformat parser and dup_logger() in log.
  • Added OOM check for calloc() in smp_fetch_acl_parse() in acl.
  • Added OOM check for calloc() in cfg_parse_listen() in cfgparse.
  • Added OOM check for calloc() in parse_compression_options() in compression.
  • Added OOM check for malloc() in indent_msg() in tools.
  • Ignored AGAIN ncbuf err when parsing CRYPTO frames in quic.
  • Fixed room check if padding requested in quic.
  • Fixed padding issue on INITIAL retransmit in quic.
  • Padded Initial pkt with CONNECTION_CLOSE on client in quic.
  • Strengthened BUG_ON() for unpad Initial packet on client in quic.
  • Ensured not to quit too early on soft stop in haproxy.
  • Silenced a possible null deref warning in parse_acl_expr() in acl build.
  • Don't leave the expire loop with elements deleted in stick-tables.
  • Never leave used entries without expiration in stick-tables.
  • Don't fail twice to grab the update lock in peers.
  • Fixed alignment issues in stats-file build.
  • Ensured check-reuse is compatible with SSL in check.
  • Fixed dst address when reusing a connection in check.

Affected Symbols