Change8

v3.5-dev1

📦 haproxyView on GitHub →
27 features🐛 39 fixes🔧 32 symbols

Summary

This release introduces several bug fixes and minor improvements across various modules including checks, mux_quic, servers, and acme. It also includes optimizations and new features for Lua integration and task management.

Migration Steps

  1. Remove the per-thread group wait queue.
  2. Remove wq_lock and the per-thread group wait queues.
  3. Move the lua httpclient code to http_client.c.
  4. Make __tasklet_wakeup_on() only accept non-local threads.
  5. Do not try to redistribute the WQ when single-threaded.

✨ New Features

  • Support healtcheck keyword on default-server lines.
  • Introduce acme_challenge_ready() for reuse outside the CLI.
  • Extend trace verbosity for H3.
  • Trace HTTP headers on FE side.
  • Trace HTTP headers on BE side.
  • Add REGISTER_HLUA_STATE_INIT() to register state init callbacks.
  • Implement ACME.challenge_ready() Lua function.
  • Add ha_diag_notice() to report diag-level notifications.
  • Publish ACME_NEWCERT event via event_hdl.
  • Publish ACME_DEPLOY event via event_hdl.
  • Add a dns-01 handler for Gandi LiveDNS API in lua/acme examples.
  • Introduce __task_set_state_and_tid.
  • Add __task_get_new_tid_field().
  • Introduce __task_get_current_owner.
  • Use __task_get_current_owner() in task_kill.
  • Start using __task_set_state_and_tid().
  • Use __task_set_state_and_tid() in task_instant_wakeup().
  • Allow multiple requests from a single core.httpclient() instance.
  • Add a BUG_ON on shut flags when the endpoint is shut.
  • Add missing NULL check after hpack_dht_defrag().
  • Make a copy of the sample expr in (set/add)-headers-bin.
  • Add a new explicitly local tasklet wakeup function.
  • Make tasklet_wakeup() explicitly call _tasklet_wakeup_here().
  • Make task_instant_wakeup() explicitly call _tasklet_wakeup_here().
  • Add a new flag TASK_RT to permit a task to skip the priority queue.
  • Add "rt=1" to "debug dev task" to tune the RT flag.
  • Add a new tasklet class for real-time: TL_RT.

🐛 Bug Fixes

  • Skip tcpcheck post-config for external checks.
  • Ignore small-buffer option when starting an external check.
  • Prevent risk of infinite loop on recv in mux_quic.
  • Do not interrupt recv on error/incomplete data in mux_quic.
  • Override external check if healthcheck section is set in tcpcheck.
  • Initialize the match array earlier during boot in regex.
  • Fix build when using no thread.
  • Implement ->get_ssl_sock_ctx() to get the SSL layer in xprt_qmux.
  • Report "ACL" not "map" in ACL ID lookup failures.
  • Dequeue checks on purge.
  • Fix Initial length value in sent packets in quic.
  • Fix build with -std=gnu89 for servers.
  • Stuck ACME task when authz is already "valid".
  • Fix compilation with USE_TRACE=0 for h3.
  • Defer enabling TLS ULP on a socket until connected in ktls.
  • Use ha_diag_notice() to report thread creations in cpu-topo.
  • Properly handle PUSH_PROMISE on backend connections in h3.
  • Fix add server with consistent hash balancing.
  • Set res.status to 0 upon SF_ERR_MASK in httpclient.
  • Remove a debugging memset on redirect in http-ana.
  • Don't ignore L7 retry errors in http-ana.
  • Properly resolve file path for 'h1-case-adjust-file' in mux-h1.
  • Fix rxbuf settings on backend side in quic.
  • Don't free the early data buffer too early in ssl.
  • Fix freeze transfer after QCS rxbuf realign in mux_quic.
  • Fix uint16_t overflow in drl += drp in mux-fcgi.
  • Reject too big content in hq-interop.
  • Do not rely on stream layer for HTX stline encoding in hq_interop.
  • Prevent reset if missing content-length in hq-interop.
  • Properly report EOS when http applet exits in hlua.
  • Support full demux buf on large response in hq-interop.
  • Support response buffer wrapping in hq-interop.
  • Increment unknown request payload length in h3.
  • Relax tid check in "debug dev task" for recent sched changes.
  • Fix wait time calculation that is always 1 extra ms in poller.
  • Truly drain outgoing HTX data when the stream is closed in mux-fcgi.
  • Truly drain outgoing HTX data when the stream is closed in mux-h2.
  • Truly drain outgoing data when the stream is closed in mux-spop.
  • Drain the given amount of data in qcs_http_reset_buf() in mux-quic.

Affected Symbols