Change8

v3.5-dev2

Breaking Changes
📦 haproxyView on GitHub →
3 breaking34 features🐛 27 fixes3 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

  1. Remove 'dispatch' and 'transparent' proxy keywords from configurations.
  2. Migrate away from OpenTracing to an alternative tracing solution.
  3. 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

⚡ Deprecations

  • Removed support for 'dispatch' and 'transparent' proxy keywords.
  • Removed deprecated OpenTracing support.
  • Removed deprecated 'master-worker' global keyword.