v3.4-dev10
Breaking Changes📦 haproxyView on GitHub →
⚠ 1 breaking✨ 22 features🐛 59 fixes⚡ 2 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
- 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'.