v3.5-dev2
Breaking Changes📦 haproxyView on GitHub →
⚠ 3 breaking✨ 34 features🐛 27 fixes⚡ 3 deprecations🔧 98 symbols
Summary
Version 3.5-dev2 introduces new features like runtime server renaming and binary-safe logging, alongside significant bug fixes in areas like QUIC and HTTP/2. It also removes support for deprecated proxy keywords and OpenTracing.
⚠️ Breaking Changes
- Removed support for 'dispatch' and 'transparent' proxy keywords. Users should remove these keywords from their proxy configurations.
- Removed deprecated OpenTracing support. Applications relying on OpenTracing will need to migrate to an alternative tracing solution.
- Removed deprecated 'master-worker' global keyword. Users should migrate to the 'worker' keyword.
Migration Steps
- Remove 'dispatch' and 'transparent' proxy keywords from configurations.
- Migrate away from OpenTracing to an alternative tracing solution.
- Replace the 'master-worker' global keyword with 'worker'.
✨ New Features
- Proxy can now report version info for option deprecation.
- Exported ssl_sock_init_srv().
- Initialized the httpclient with default SSL values.
- Added minimal traces for QUIC MUX init/release.
- Added request start-line traces for hq-interop.
- Traced transcoding of response status line for hq-interop.
- Traced HTX headers for hq-interop.
- Distinguished name references with new SRV_F_NAME_REFD flag.
- Added 'set server name' CLI command for runtime server renaming.
- Introduced a new lightweight hbuf API.
- Added no listener mode.
- Added definitions for haload streams.
- Added definition of hldstream struct objects.
- Added OBJ_TYPE_HALOAD for haload stream objects.
- Added sc_hastream() and __sc_hastream() helpers.
- Exported sc_new().
- Exported functions used during server initialization.
- Imported source code and documentation for haload.
- Added app_log_raw() and send_log_raw() for binary-safe logging.
- Added a macro to ignore all arguments for compilers.
- Always pretend to use arguments when trace is disabled.
- Added macros enable_opts and disable_opts.
- Added an option to enable or disable HTTP/2 (USE_H2).
- Added an option to enable or disable FCGI (USE_FCGI).
- Added an option to enable or disable SPOE (USE_SPOE).
- Added a new generic target 'tiny'.
- Used separate error code for STOP_SENDING in mux_quic.
- Adjusted shut stream callback in mux_quic.
- Added proxy used for healthcheck sections in proxies list.
- Added function to get a large/regular chunk depending on a buffer.
- Added a field to save the headers data size in htx.
- Added be_max_retries/cur_max_retries sample fetch functions.
- Added note about QUIC usage on SSL port for haterm.
- Moved statistics header printing to mtask_cb in haload.
🐛 Bug Fixes
- Fixed trace crash on frontend response headers in h3.
- Fixed memory leak of rx app_buf on stream free in mux_quic.
- Fixed transcoding of wrapping response buffer in hq-interop.
- Fixed transcoding of absolute URI in hq-interop.
- Adjusted HTTP headers traces in h3.
- Initialized agent.health in srv_settings_init() in server.
- Set SMP_F_CONST on srv_name fetch in sample.
- Fixed default global settings being overwritten by -G in init.
- Fixed invalid character detection in strl2ic() in tools.
- Don't swap buffers for empty HTX message with an error in htx.
- Fix handling EOM after in qcs_http_rcv_buf() in mux-quic.
- Don't by-pass HTX API when merging cookie values in http-htx.
- Fixed parser desync on error with multiple frames in h3.
- Prevented multiple STOP_SENDING emission per stream in mux_quic.
- Do not free QCS if STOP_SENDING to sent in mux_quic.
- Completed stream shutdown for read channel in mux_quic.
- Ignored STREAM after MUX closure on BE side in quic.
- Fixed a deadlock when closing other tgroups fds.
- Fixed spurious task wakeup in hld_strm_task() in haload.
- Treated unexpected escape sequences as literals in hbuf.
- Fixed a possible underflow on be2hex for large chunk size in sample.
- Reviewed chunks usage to not retrieve a large buffer by error in chunk.
- Ensured size of headers never exceed regular buffer on update in htx.
- Fixed custom timeouts initialization when setting backend in stream.
- Fixed custom max-retries initialization when setting backend in stream.
- Made url-dec failed if no space for trailing null byte in http-conv.
- Do not see ocsp loading failures as fatal anymore.
Affected Symbols
proxyOpenTracingdispatchtransparentcli/show-fdconnectionbackendtraceh3mux_quicsslhttpclienthq-interopserversamplehbufinitstconnhaloadlogtoolshtxmux-quichttp-htxquic_frametrace/h3trace/configtrace/tree-widemakefilequicfdmworkerhatermreadmeocspscripts/run-regtests.shvmactions/freebsd-vmhaloadhatermssl_sock_init_srv()agent.healthsrv_settings_init()SMP_F_CONSTSRV_F_NAME_REFDset server nameport_rangehbuf APIno listener modehaload streamshldstream structOBJ_TYPE_HALOADsc_hastream()__sc_hastream()sc_new()app_log_raw()send_log_raw()strl2ic()htx_xfer()qcs_http_rcv_buf()gccssl_sock_handshakehaproxymux-h2debug/tracechunk_frm_appendf()trace decodingtrace definitiontrace.cssl_trace.cenable_optsdisable_optsUSE_H2USE_FCGIUSE_SPOEtinySTOP_SENDINGmux_quicQCSSTREAMMUX closuretgroups fdsmaster-workerworkerpatchbothld_strm_task()be2hexchunkhtxstreambe_max_retriescur_max_retrieshttp-convurl-dechaterm build targethaproxy -ccREQUIRE_OPTIONREQUIRE_SERVICEPROMEX
⚡ Deprecations
- Removed support for 'dispatch' and 'transparent' proxy keywords.
- Removed deprecated OpenTracing support.
- Removed deprecated 'master-worker' global keyword.