v3.4-dev9
📦 haproxyView on GitHub →
✨ 36 features🐛 45 fixes🔧 78 symbols
Summary
This release introduces the OpenTelemetry filter, enhancing observability capabilities. It also includes significant improvements to QUIC transport and various bug fixes across multiple components.
Migration Steps
- Rename the variable `dbg_indent_level` to `flt_ot_dbg_indent_level`.
✨ New Features
- Add filter name to flt_conf struct.
- Add "filter-sequence" directive.
- Implement net_addr_type_is_quic().
- Revamp the way the protocol and xprt are determined.
- Add tune.lua.openlibs to restrict loaded Lua standard libraries.
- Implement Rx buffering for xprt_qstrm.
- Handle extra QMux frames after params in xprt_qstrm/mux-quic.
- Implement Tx buffering for xprt_qstrm.
- Handle connection errors for xprt_qstrm.
- Implement QMux record parsing for mux-quic.
- Implement QMux record parsing for xprt_qstrm.
- Implement QMux record emission for mux-quic/xprt_qstrm.
- Added OpenTelemetry filter skeleton.
- Added configuration and utility layer for OpenTelemetry.
- Added configuration parser and event model for OpenTelemetry.
- Added post-parse configuration check for OpenTelemetry.
- Added memory pool and runtime scope layer for OpenTelemetry.
- Implemented filter callbacks and event dispatcher for OpenTelemetry.
- Wired OTel C wrapper library integration.
- Implemented scope execution and span management for OpenTelemetry.
- Added context propagation via carrier interfaces for OpenTelemetry.
- Added HTTP header operations for context propagation in OpenTelemetry.
- Added HAProxy variable storage for context propagation in OpenTelemetry.
- Added prefix-based variable scanning for OpenTelemetry.
- Added CLI commands for runtime filter management for OpenTelemetry.
- Added group action for rule-based scope execution in OpenTelemetry.
- Added log-format support to the sample parser and runtime for OpenTelemetry.
- Added test and benchmark suite for the OTel filter.
- Added span link support for OpenTelemetry.
- Added metrics instrument support for OpenTelemetry.
- Added log-record signal support for OpenTelemetry.
- Added full-event test config for OpenTelemetry.
- Added flt_otel_sample_eval and exposed flt_otel_sample_add_kv.
- Changed log-record attr to use sample expressions.
- Changed instrument attr to use sample expressions.
- Implement dns-persist-01 challenge for ACME.
🐛 Bug Fixes
- Fix ambiguous info in log-steps directive description.
- Revert "CLEANUP: tcpcheck: Don't needlessly expose proxy_parse_tcpcheck()".
- Reintroduce proxy_parse_tcpcheck() symbol.
- Move all init functions of haterm in haterm_init.c.
- Disable 0-copy forwarding when draining the request in mux-h1.
- Fix two typos in the server param "healthcheck" description.
- Fix a typo in the "pause" action error message in http-act.
- Reject unknown keyword during parsing of healthcheck section in tcpcheck.
- Fix parsing of healthcheck param for dynamic servers in tcpcheck/server.
- Fix unexpected 127 char GUID truncation for shm-stats-file objects.
- Properly retrieve tcpcheck type to install the best mux.
- Validate SNI name_len in req.ssl_sni.
- Fix NULL deref crash with empty CEK and non-dir alg in jwe.
- Fix heap overflow in ECDSA signature DER conversion in jwt.
- Fix memory leak in jwt_decrypt_secret with var argument in jwe.
- Fix stack overflow in httpclient headers conversion in hlua.
- Fix stack overflow in httpclient headers conversion in hlua.
- Fix format-string vulnerability in Patref error path in hlua.
- Fix typo allocating small trash with bufsize_large in chunk.
- Fix infinite loop in get_larger_trash_chunk().
- Fix OOB heap write in dictionary cache update in peers.
- Wake the stconn on error when failing to create mux.
- Really enforce mux protocol requirements.
- Always make sure to limit fixed output to less than worst case literals in slz.
- Fix memory leak on AAAA additional records in resolvers.
- Fix pointer arithmetic overflow in spoe_decode_buffer() in spoe.
- Validate decoded lengths in "*-headers-bin" in http-act.
- Return the good start-line for 100-continue interim message in haterm.
- Fix handling of SMP_T_METH samples.
- Fix info leak in regsub when exp_replace fails.
- Prevent record-length truncation with large bufsize in mux-fcgi.
- Fix use-after-free of HTTP reason string in hlua.
- Fix potential NULL deref on qcc_release() in mux-quic.
- Increment pos pointer on QMux transport params parsing in quic.
- Do not crash on QMux reception of BLOCKED frames.
- Revert "BUG/MEDIUM: haterm: Move all init functions of haterm in haterm_init.c".
- Properly initialize the splicing support for haterm.
- Prevent QMux crash on qcc_io_send() error path in mux_quic.
- Do not parse record length on read again in xprt_qstrm.
- Removed dead code in flt_ot_parse_cfg_str().
- Fixed wrong NULL check in flt_ot_parse_cfg_group().
- Do not use hardcoded values in QMux TP frame builder in quic.
- Fix error message when using unavailable fetch in logfmt.
- Properly handle too big payload on a command line in cli.
- Preserve the pipe size margin for splicing in haterm.
Affected Symbols
proxy_parse_tcpcheck()haterm_init.cmux-h1healthcheckhttp-acttcpchecktcpcheck/servershm-stats-filereq.ssl_snijwejwthluahttpclient headers conversionPatref error pathchunkget_larger_trash_chunk()peersdictionary cache updatestconnmuxslztune.lua.openlibsresolversspoe_decode_buffer()http-act*-headers-binhaterm100-continue interim messageSMP_T_METH samplesregsubexp_replacemux-fcgibufsizehluaHTTP reason stringmux-quicqcc_release()quicQMux transport paramsxprt_qstrmQMux framesmux-quicxprt_qstrmQMux recordotelflt_otel_sample_evalflt_otel_sample_add_kvlog-record attrinstrument attrsample expressionsotflt_ot_parse_cfg_str()flt_ot_parse_cfg_group()opentracing filterdbg_indent_levelflt_ot_dbg_indent_levelquic-interop-*.ymlhaproxy -vqaws-lc.ymlaws-lc-fips.ymlaws-lc-template.ymlsetup-vtestmux_quicQMux local transport paramsquicQMux TP frame builderlogfmtsess_build_logline_orig()stream_generate_unique_id()smp_fetch_uniqueid()WolfSSLasanmemvprintf()clireg-tests/jwt/jwt_decrypt.vtchatermacmedns-persist-01 challenge