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
- Remove the per-thread group wait queue.
- Remove wq_lock and the per-thread group wait queues.
- Move the lua httpclient code to http_client.c.
- Make __tasklet_wakeup_on() only accept non-local threads.
- 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.