Change8

v3.3-dev12

Breaking Changes
📦 haproxyView on GitHub →
2 breaking14 features🐛 33 fixes2 deprecations🔧 26 symbols

Summary

This release introduces automatic SSL on QUIC servers, optional AAD parameter support for AES-GCM, and various bug fixes including a crash fix on non-x86 platforms. Several configuration options and keywords have been deprecated or modified for improved compatibility and robustness.

⚠️ Breaking Changes

  • The 'master-worker' keyword in configuration files is now deprecated when used alone. To fix this, ensure 'master-worker' is used in conjunction with other relevant keywords or consider alternative configurations.
  • The 'daemon' configuration option is no longer compatible with the '-Ws' flag. Adjust your configuration or command-line arguments to avoid this conflict.

Migration Steps

  1. If using 'master-worker' alone in your configuration, ensure it is used with other relevant keywords or adjust your configuration.
  2. If using the 'daemon' configuration option with the '-Ws' flag, modify your configuration or command-line arguments to avoid this incompatibility.

✨ New Features

  • QUIC servers now automatically enable SSL.
  • Optional AAD parameter support has been added to aes_gcm_enc/dec.
  • A FIPS version can now be built without FIPS.
  • Temporary key pairs can be generated for ACME.
  • Key pairs can be generated for ACME when no files are available.
  • Counters for req_in/req_out/res_in/res_out have been added for fe/be/srv/li.
  • Stats about request and response bytes received and sent have been added.
  • A function to get the amount of data in the output buffer has been added to applets.
  • Support for 'ist' has been added to word fingerprinting functions.
  • env_suggest() has been added to suggest alternate variable names.
  • parse_line's error pointer now points to unknown variable names.
  • The cfgparse module now attempts to suggest correct variable names on errors.
  • Improved traces for peers.
  • The 'bytes' field has been added to req_{in,out} and res_{in,out} names in sample/stats.

🐛 Bug Fixes

  • Ensured fair round robin iteration in resolvers.
  • Fixed a crash on non-x86 platforms caused by an unaligned cast in stats-file.
  • Fixed a crash on client handshake abort in QUIC.
  • Fixed a 414 / 431 status code reporting issue in mux-h1.
  • Ensured that a dead connection is not moved to idle in mux-h2.
  • Permitted the permanent removal of an idle connection.
  • Ensured that expiration is handled on all stick tables.
  • Fixed a wrong function name in ckch_conf_kws during SSL/CKCH build.
  • Fixed signedness and unused variables in acme_gen_tmp_x509().
  • Fixed an initialization issue in acme_gen_tmp_x509().
  • Fixed ckch_conf_kws parsing without ACME during SSL/CKCH build.
  • Fixed a possible crash on error paths in ACME.
  • Fixed the wrong dns-01 challenge in ACME logs.
  • Fixed an update message parsing issue during a full resync in peers.
  • Ensured updates are seen as local in stick-tables.
  • Used aligned allocations for struct proxy.
  • Used aligned allocations for struct proxy_per_tgroup.
  • Closed a race around ready_srv when deleting a server.
  • Emitted a warning for empty args when not in discovery mode.
  • Resolved the empty argument problem again.
  • Fixed rpath in AWS-LC install for openssl and bssl bin during build-ssl script.
  • Fixed an issue where the connection argument was removed from qc_new_conn().
  • Fixed an issue where the conn member was not set if ssl_sock_ctx was present.
  • Added a rwlock to the path parameter in the server.
  • Ensured srv_reset_path_parameters() is called on srv up.
  • Made sure not to move a dead connection to idle in mux-h2.
  • Made sure we handle expiration on all tables in stick-tables.
  • Fixed ckch_conf_kws parsing without ACME.
  • Moved the lock inside srv_add_idle().
  • Allowed 'key' when generating a certificate in ACME.
  • Limited the 'tune.maxpollevents' parameter to 1000000.
  • Rejected configs with empty arguments.
  • Replaced offset calculation with offsetof to avoid UB in cebtree.

Affected Symbols

⚡ Deprecations

  • The 'master-worker' keyword in configuration files is deprecated when used alone.
  • The 'master-worker' keyword in configuration files is deprecated.