Change8

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

  1. 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