Change8

v3.4-dev10

Breaking Changes
📦 haproxyView on GitHub →
1 breaking22 features🐛 59 fixes2 deprecations🔧 33 symbols

Summary

Version 3.4-dev10 introduces several bug fixes, minor improvements, and new features across various modules including OTel, ACME, muxing protocols, and stream handling. Notably, the default max-threads-per-group has been updated, and several memory leaks and protocol handling issues have been resolved.

⚠️ Breaking Changes

  • The default value for `max-threads-per-group` has been changed from an unspecified value to 16. If your application relies on the previous default, you may need to explicitly configure this setting.

Migration Steps

  1. If your application relies on the previous default value for `max-threads-per-group`, explicitly configure this setting.

✨ New Features

  • Added debug thread ID support for the OTel C wrapper library.
  • Added option parsing to the OTel speed test script.
  • Unified OTel run scripts into a single symlinked script.
  • Implemented draft-ietf-acme-profiles for ACME.
  • Allow IP SAN in certificate requests for ACME.
  • Make RQ/RS stats available everywhere.
  • Handle the payload pattern as a pointer in the cmdline buffer.
  • Added support for dynamically allocated payloads in the CLI.
  • Increased the payload pattern up to 64 bytes in the CLI.
  • Moved the HTTP transaction in an union for streams.
  • Added flags to identify the stream transaction when allocated.
  • Used a pcli transaction to replace pcli_* members.
  • Implemented close callback for xprt_qstrm.
  • Refactored QMux send frames function.
  • Used dynamic Tx streams buffers for QMux.
  • Used dynamic conn buffers for QMux.
  • Simplified Rx buffer transfer for mux_quic/xprt_qstrm.
  • Receive MAX_STREAMS_BIDI frames in QMux.
  • Handle conn errors on QMux without crash.
  • Handle incomplete QMux record read.
  • Converter for frontend existence check in sample.
  • Allow connection reuse without prior traffic in tcpcheck.

🐛 Bug Fixes

  • Fixed spelling of "max-threads-per-group" in the config documentation.
  • Ignored conn->owner when deciding if a connection is dead in mux-h2.
  • Fixed uninitialized read in run_tasks_from_lists().
  • Limited avail_streams() to 2^62 in mux_quic.
  • Prevented new streams on GOAWAY reception in h3.
  • Released BE idle conn after GOAWAY reception in mux-quic.
  • Don't pass size_t to %lu in error messages in haterm.
  • Read record length in 64bits in xprt_qstrm.
  • Converted QCC rx.rlen to 64bits in mux_quic.
  • Reduced max record length check in xprt_qstrm.
  • Potential null pointer dereference in sample_conv_aes in ssl/sample.
  • Don't forget to set the "alt_proto" field in checks.
  • Do not install pcre-devel on Fedora Rawhide build.
  • Fixed sysctl in fedora-rawhide.
  • Switched to USE_PCRE2 in Fedora Rawhide build.
  • Considered format expression dependencies to decide when to log.
  • Adjusted dependencies for channel output bytes counters in sample.
  • Always set conn->owner to the session that owns the connection in muxes.
  • Always reset the conn->owner on backend when installing mux in session.
  • Protected task->expire on 32-bit platforms in sched.
  • Fixed syntax error in reg-tests/ssl/ssl_dh.vtc.
  • Modernized actions/upload-artifact@v4.
  • Made shell syntax errors fatal in reg-tests.
  • Counted a protocol error when failing to parse a trailer in mux-h2.
  • Counted a proto error when rejecting a stream on parsing error in mux-h2.
  • Ensured we don't schedule a task already running in tasks.
  • Fixed ip.fp infinite loop on malformed tcp options in net_helper.
  • Made tune.h2.log-errors actually work in h2.
  • Don't look at the exclusive bit for PRIORITY frame in h2.
  • Don't forget to free shared_rx_bufs on failure in H2.
  • Waited for the response when logging response headers in log.
  • Fixed condition to send null-chunk for bodyless message in mux-h1.
  • Fixed test to skip trailers from chunked messages in mux-h1.
  • Fixed a typo in a "del-heeaders-bin" error message in http-act.
  • Don't release ruleset when parsing 'spop-check' ruleset in tcpcheck.
  • Fixed a leak on deinit by releasing ruleset's conf.file in tcpcheck.
  • Released temporary small chunk when retrying on http-check in tcpcheck.
  • Added SF_TXN_HTTP/SF_TXN_PCLI flags in strm_show_flags() in stream.
  • Properly disabled request when setting response in compression.
  • Fixed last_sess date calculation in servers.
  • Fixed typo introduce in max-threads-per-group documentation.
  • Added the newly added SF_TXN_* flags to strm_show_flags() in stream.
  • Properly marked the entire libs archive read-only in debug.
  • Reverted "BUG/MINOR: stream: add the newly added SF_TXN_* flags to strm_show_flags()".
  • Fixed a possible leak of an error message in dynamic servers.
  • Detected incomplete transfers on HEADERS frames as well in mux-h2.
  • Forced close mode for bodyless message announcing a C-L in mux-h1.
  • Prevented crash on qc_frm_free() with QMux in mux_quic.
  • Ensured all local TPs are allocated in xprt_qstrm.
  • Prevented crash if conn release on MUX wake in xprt_qstrm.
  • Did not release conn on qcc_recv() for QMux in mux_quic.
  • Fixed crash on 'dump stats-file' in stats.
  • Fixed memory leaks on realloc failure in ssl_ckch.c.
  • Fixed memory leaks on realloc failure in ssl_sock.c.
  • Fixed memory leak on realloc failure in acme.ips.
  • Fixed double-free on failed realloc in ssl_sock.c.
  • Fixed a few user-visible spelling mistakes from dev7 in tree-wide.
  • Fixed my_memspn/my_memcspn wrong cast causing incorrect byte reading in tools.
  • Fixed memory leak in indent_msg() on out of memory in tools.

Affected Symbols

⚡ Deprecations

  • A deprecation warning is now emitted at filter initialization for 'ot'.
  • A deprecation warning is now emitted at build time for 'ot'.