Change8

v3.4-dev5

📦 haproxyView on GitHub →
28 features🐛 39 fixes🔧 75 symbols

Summary

This release introduces dynamic backend creation and enhances task profiling with fine-grained settings. It also includes numerous bug fixes across various modules like QUIC, SSL, and DeviceAtlas, alongside improvements in buffer management and HTX processing.

Migration Steps

  1. Check default proxy compatibility on "add backend" handler.

✨ New Features

  • Implement dynamic backend creation.
  • Add function to check support for dynamic servers.
  • Define "add backend" handler.
  • Parse mode on dynamic backend creation.
  • Parse guid on dynamic backend creation.
  • Check default proxy compatibility on "add backend".
  • Assign dynamic proxy ID.
  • Support setting/clearing lock/memory watching for task profiling.
  • Apply and use new finegrained task profiling settings.
  • Allow to switch per-task lock/memory profiling at runtime.
  • Add the SSL lib verify directory in haproxy -vv.
  • Convert an RSA JWK into an EVP_PKEY.
  • Add new jwt_decrypt_jwk converter.
  • Add HAVE_WORKING_TCP_MD5SIG in haproxy -vv.
  • Sort the feature list in haproxy -vv.
  • Show the list of detected features at runtime with haproxy -vv.
  • Rework RESUME_FILTER_* macros as inline functions.
  • Rework filter iteration for channel related callback functions.
  • Use per-channel filter list when relevant.
  • Add a utility to find the post-mortem address from a core.
  • Use unsigned longs to display pools memory usage.
  • Make "balance random" consider tg local req rate when loads are equal.
  • Add BUG_ON_STRESS() when draining data on closed stream.
  • Add an option to limit the amount of data forwarded.
  • Add a pool for large buffers with a configurable size.
  • Add support for large chunks.
  • Offer buffers of default size only.
  • Get large chunk if necessary to perform a defrag.

🐛 Bug Fixes

  • Initialize maxthrpertgroup earlier.
  • Differ checking the max threads per group number.
  • Fix allocation error message of progname string.
  • Handle a possible strdup() failure.
  • Fix clang build error on "add backend" handler.
  • Fix null dereference in "add backend" handler.
  • Fix default ALPN bind settings.
  • Always properly initialize lb_nodes with dynamic servers.
  • SSL_CERT_DIR environment variable doesn't affect haproxy.
  • Ensure handshake speed up is only run once per conn.
  • Reject invalid token.
  • Fix parsing frame type.
  • Missing '\n' in error message.
  • Add missing return on error in config parsers.
  • Add NULL checks on strdup() results in config parsers.
  • Fix resource leaks on init error paths.
  • Fix off-by-one in da_haproxy_conv().
  • Fix cookie vlen using wrong length after extraction.
  • Fix double-checked locking race in checkinst.
  • Fix resource leak on hot-reload compile failure.
  • Fix deinit to only finalize when initialized.
  • Set cache_size on hot-reloaded atlas instance.
  • Lack crtlist_dup_ssl_conf() declaration.
  • Double-free on error path w/ ssl-f-use parser.
  • Fix leak in ssl-f-use parser upon error.
  • Clarify ssl-f-use errors in post-section parsing.
  • Error with ssl-f-use when no "crt".
  • Revert "MEDIUM: mux-quic: add BUG_ON if sending on locally closed QCS".
  • Reject frontend CONNECT as currently not implemented.
  • Stop sending via fast-forward if stream is closed.
  • Stop sending vi fast-forward for unexpected states.
  • Fix test on shut flags for legacy applets (v2).
  • Fix hanshake events decoding.
  • Properly compute length of the first DATA block.
  • Use the next block when data exactly filled a block.
  • Stop to wait for body on client error/abort.
  • Fix timing side-channel and dead code in JWE decryption.
  • Check buffer pool creation for failures.
  • SSL backend sessions used after free.

Affected Symbols