From: Willy Tarreau Date: Wed, 14 Oct 2026 14:03:07 +0000 (+0200) Subject: [RELEASE] Released version 3.5-dev9 X-Git-Tag: v3.5-dev9^0 X-Git-Url: https://git.kaiwu.me/$%7BGITURL%7D/doc/static/gitweb.js?a=commitdiff_plain;h=37f3ad8aa35bb34b2363b73541780df6c7226270;p=haproxy.git [RELEASE] Released version 3.5-dev9 Released version 3.5-dev9 with the following main changes : - CLEANUP: sym: move symbol resolution out of tools.c - MINOR: sym: add an in-process symbol table for backtraces - MINOR: sym: collect the symbols known to the dynamic linker - MINOR: sym: add helpers to collect the symbols of an ELF image - IMPORT: xz: import the xz-embedded decoder - MEDIUM: sym: store a compressed symbol table in a loadable section - MINOR: sym: read local symbols and debug info from ELF files - MINOR: sym: also read the compressed symbol tables from the ELF files - OPTIM: sym: skip the embedded table when the file provided the symbols - MINOR: makefile: add CROSS_TOOLCHAIN to prefix the target's tools - BUG/MINOR: proxy: add PR_CAP_LB for dynamically added backend - BUG/MINOR: server: fix "del server" description - BUG/MINOR: cli: update wait help usage - BUG/MEDIUM: server: remove immediately from GUID tree on delete server - DOC: server: explicit refcount interaction in "del server" - MINOR: ocsp: Remove free of main structure from ssl_sock_free_ocsp_data - MINOR: ocsp: Send OCSP response status back to caller - MINOR: ocsp: Raise specific ocsp error code in ocsp parsing/verifying functions - MINOR: ocsp: Dup OCSP_CERTID in ssl_ocsp_create_request_details - MEDIUM: ocsp: Create new do-ocsp-request action - MINOR: ocsl: Add 'inapplicable' return code to client certificate ocsp check - DOC: ocsp: Add doc for the new 'do-ocsp-request' action - REGTESTS: ocsp: Add 'do-ocsp-request' tests - BUILD: ssl: fix build without USE_OPENSSL + clear_ocsp_clt_check_ctx - DEV: sse-latency: add a latency measuring tool for SSE response streams - MINOR: http-ana: automatically enable http-no-delay for streaming events (SSE) - REGTESTS: cli: don't check the HAProxy string - BUILD: Hopefully fix build on FreeBSD - BUILD: sym: Define HA_HAVE_DL_ITERATE_PHDR on FreeBSD - BUG/MINOR: log: fix erroneous error message in log-steps parser - MINOR: log: add "loggers" section - MINOR: log: support 'to' parameter for "log" directive - MINOR: log: support explicit list for do_log_ctx() - MINOR: log: support 'to' parameter fo do-log action - DOC: config: document new "loggers" section and relevant uses - MINOR: ssl: support curve fetches with AWS-LC API 30 - BUILD: ssl: avoid mixed declarations in the AWS-LC curve fetch - DEBUG: support reading set-dumpable from HAPROXY_FORCE_DUMPABLE - BUG/MINOR: hq-interop: prevent double EOM on request with standalone FIN - BUG/MINOR: ssl: fix trace crash on FE conn release in io cb - BUG/MINOR: ssl: fix trace crash on BE conn release in io cb - BUG/MEDIUM: ssl: crt-list ciphers ignored with AWS-LC - BUG/MEDIUM: ssl: crt-list curves ignored with AWS-LC - CI: github: test AWS-LC 3.x and 4.x LTS branches - CI: github: test the latest AWS-LC release on development branches - CI: github: cache QuicTLS builds - CI: github: move wolfSSL 5.7.0 testing to a nightly workflow - BUG/MEDIUM: listener: Consider maxconn before waking listeners - BUG/MINOR: ssl: don't uppercase the native group name - DOC: ssl: clarify the NID-based curve fetch branch - BUG/MINOR: ssl: use standard names for X25519 and X448 groups - MINOR: ssl: split curve names into ANSI, IANA and NIST columns - MINOR: ssl: skip unavailable NIDs in curves2nid lookup - MINOR: ssl: complete registered group names and library NID mappings - MINOR: ssl: add curve2name converter - MINOR: ssl: accept integer group IDs in curve2name - BUG/MAJOR: mux-quic: prevent crash on QCS already set for purging - BUG/MINOR: mux_quic: prevent purgeable QCS lingering - BUG/MINOR: mux_quic: extend FINAL_SIZE_ERROR detection on stream - BUG/MINOR: mux_quic: report conn error on RESET_STREAM fctl violation - BUG/MEDIUM: mux_quic: account discarded data in connection flow control - BUG/MINOR: mux_quic: account data in conn fctl on early detach - BUG/MINOR: h3: reject frames with truncated header - BUG/MINOR: h3: close connection on GOAWAY frame too long - BUG/MINOR: h3: reject RS/SS for QPACK uni streams - BUG/MEDIUM: mux_quic: notify stream on RESET_STREAM reception - BUG/MINOR: ssl: Fix potential NULL-deref in "dump ssl cert" with AWS-LC - BUG/MEDIUM: h3: fix end-of-input report on DATA wrapping - MEDIUM: h3: do not close conn on unaligned non DATA frame - MINOR: doc: elaborate on diagnostic mode behavior - BUG/MEDIUM: h3: fix incorrect DATA size block on DEM FULL - BUG/MAJOR: cfgparse: properly check userlist section when scanning keywords - BUG/MINOR: cfgparse-global: add missing gotos to error label in max-spread-checks - BUG/MINOR: cfgparse-global: add missing calloc() check for the global description - BUG/MINOR: cfgparse-listen: release the previous description of the proxy - BUG/MINOR: cfgparse-listen: fix the argument checked by "email-alert" - BUG/MINOR: cfgparse-listen: fix quoting of the condition conflict warning - BUG/MINOR: cfgparse-global: reject extra arguments to numa-cpu-mapping and anonkey - BUG/MINOR: cfgparse-listen: always reject extra arguments to "persist" - BUG/MINOR: cfgparse-listen: don't lose the errors reported while creating a proxy - BUG/MINOR: cfgparse-listen: properly reject extra args in a backend section - BUG/MINOR: proxy: also look for the closest option among cfg_opts3 - BUG/MINOR: cfgparse-listen: complete the list of options for the suggestions - CLEANUP: proxy: adapt the error message for removed "option transparent" - MINOR: cfgparse: expose the keyword modifier to the keyword parsers - CLEANUP: cfgparse-global: move the argument-less boolean options to a parser - CLEANUP: cfgparse-global: move "set-dumpable" to its own parser - CLEANUP: cfgparse-global: move "uid", "gid", "user" and "group" to its own parser - CLEANUP: cfgparse-global: move "external-check" to its own parser - CLEANUP: cfgparse-global: move "cluster-secret" to its own parser - CLEANUP: cfgparse-global: move the process-wide limits to a single parser - CLEANUP: cfgparse-global: move the compression limits to a single parser - CLEANUP: cfgparse-global: move "ssl-server-verify" to its own parser - CLEANUP: cfgparse-global: move "node" and "description" to their own parser - CLEANUP: cfgparse-global: move "unix-bind" to its own parser - CLEANUP: cfgparse-global: move the log keywords to a single parser - CLEANUP: cfgparse-global: move the state file keywords to their own parser - CLEANUP: cfgparse-global: move the spread-checks keywords to their own parser - CLEANUP: cfgparse-global: move "cpu-map" to its own parser - CLEANUP: cfgparse-global: move "anonkey" to its own parser - CLEANUP: cfgparse-global: ask not to add new keywords in common_kw_list[] - CLEANUP: cfgparse-global: simplify cfg_parse_global() - MINOR: cfgparse-listen: introduce proxy_parse_removed_kw() and use it - MEDIUM: cfgparse-listen: move removed keywords' help messages into an array - CLEANUP: cfgparse-listen: move "disabled" and "enabled" to their own parser - CLEANUP: cfgparse-listen: move the connection limits to thier own parser - CLEANUP: cfgparse-listen: move the backend one-arg keywords to their own parser - CLEANUP: cfgparse-listen: move "mode" to its own parser - CLEANUP: cfgparse-listen: move "id" and "description" to their own parser - CLEANUP: cfgparse-listen: move "acl" to its own parser - CLEANUP: cfgparse-listen: move the monitor keywords to their own parser - CLEANUP: cfgparse-listen: move the persistence keywords to their own parser - CLEANUP: cfgparse-listen: move "capture" to its own parser - CLEANUP: cfgparse-listen: move the log format keywords to their own parser - CLEANUP: cfgparse-listen: add parser for "log", "log-tag" and "unique-id-header" - CLEANUP: cfgparse-listen: move the load-balancing keywords to their own parser - CLEANUP: cfgparse-listen: move "source" "usesrc" and "interface" to their own parser - CLEANUP: cfgparse-listen: add parser for server/backend sekection keywords - CLEANUP: cfgparse-listen: move the HTTP rule sets to their own parser - CLEANUP: cfgparse-listen: move "redirect" to its own parser - CLEANUP: cfgparse-listen: move "stick-table" to its own parser - CLEANUP: cfgparse-listen: move "stick" to its own parser - CLEANUP: cfgparse-listen: move "cookie" to its own parser - CLENAUP: cfgparse-listen: move "email-alert" to its own parser - CLEANUP: cfgparse-listen: move "stats" to its own parser - CLENAUP: cfgparse-listen: move the "server" keywords to their own parser - CLEANUP: cfgparse-listen: move "bind" to its own parser - MINOR: log: add proxy_logformat_origin() to detect a proxy's log-format type - CLEANUP: cfgparse-listen: move "option" to its own parser - CLEANUP: cfgparse-listen: simplify the second half of cfg_parse_listen() - MINOR: cfgparse: always suggest the section names on an unknown keyword - CLEANUP: cfgparse: remove the unused common_kw_list[] definitions - MEDIUM: spoe: add the "on-switching-rules" event - BUG/MEDIUM: cli: fix the last command detection on a full command line - REGTESTS: cli: test a command line of exactly tune.bufsize bytes - BUG/MEDIUM: log: do not ignore the peer's shutdown in the syslog applet - REGTESTS: log: check that a log-forward TCP session ends on client close - BUG/MINOR: spoe: Fix the message list splice with an empty list - BUG/MINOR: flt-decomp: Fix the decompression filter keyword list name - MEDIUM: flt-http-comp: Enable compression directions from algorithms - MINOR: flt-http-comp: Use compression options as filter config - BUG/MINOR: flt-http-comp: Enable implicit filters independently per direction - MINOR: flt-http-comp: Don't uselessly init a compression filter - MINOR: flt-decomp: Don't instantiate a filter without applicable direction - MINOR: bwlim: Use a different filter ID for in/out filters - MINOR: fcgi: Move application validation to the post-check stages - MINOR: filters: Introduce filter classes and per-side class ordering - MINOR: filters: Add per-proxy filter instance storage and lookup - MINOR: filters: Inherit filter instances from defaults sections - MINOR: filters: Add instance parsers for the built-in classes - MEDIUM: filters: Parse and finalize filter-config instances - MINOR: filters: Add filter-enable and filter-disable directives - MINOR: filters: Add per-side filter-sequence constraints - MINOR: filters: Mirror implicit filters as filter instances - MINOR: filters: Expose classes and instances through the CLI - MINOR: filters: Reject filter-* directives in anonymous defaults - MINOR: filters: Restrict defaults inheritance with explicit filter directives - MINOR: filters: Reject mixing legacy and filter-* directives - MINOR: filters: Maintain a global instance list per proxy - MINOR: filters: Use global instance order for startup operations - MINOR: filters: Support global instance sequencing - MINOR: filters: Expose global filter ordering through the CLI - MINOR: filters: Use a proxy flag to detect use of legacy 'filter' directive - MINOR: filters: Don't finalize filter instances in legacy mode - MINOR: filters: Add helpers to iterate and find filter configurations - MINOR: filters: Add flt_has_filter() and use it in proxy_finalize() - MINOR: filters: Select legacy or instance model in lifecycle callbacks - MEDIUM: filters: Attach filter instances to streams - MEDIUM: cache: Resolve cache rules during the check stage - MINOR: cache: Use the filter helpers for cache checks and post-check - MINOR: fcgi-app: Use the filter configuration helpers for lookups and checks - MINOR: bwlim: Look up the bandwidth filter with the filter helpers - MINOR: flt-decomp: Use the filter helpers for implicit decompression checks - MINOR: flt-http-comp: Use the filter helpers for implicit compression checks - MINOR: spoe: Use the filter configuration helpers for lookups and checks - REGTESTS: filters: Add a test for per-proxy stream filter ordering - REGTESTS: filters: Exercise Lua inheritance and state selection - REGTESTS: filters: Exercise stream isolation across backend modes - REGTESTS: filters: Exercise Lua callback resumption - REGTESTS: filters: Exercise Lua filters across HTTP retries - REGTESTS: filters: Exercise Lua probes around mixed built-in filters - REGTESTS: filters: Exercise TCP Lua payload chains and sequencing - REGTESTS: filters: Exercise per-thread Lua instance state - REGTESTS: filters: Record Lua callback waits across backend EOF - REGTESTS: filters: Check non-HTX Lua filters in HTTP chains - MINOR: filters: Add a global option to enforce the legacy filter api - DOC: filters: Document the filter instance mode and the legacy mode - DOC: lua: Document the filter instance declaration of Lua filters - CLEANUP: filters: Use the stream filter instance wording in comments - MINOR: filters: List the filter classes in haproxy -vv - DOC: config: Review "Supported filters" section - MINOR: lua: Protect the common Lua state during a runtime filter deinit - MEDIUM: stream: Hold a reference on the frontend during stream_free() - MINOR: applet: Add a destroy callback to the applets - BUG/MEDIUM: spoe: Let an agent outlive its applets during a backend deletion - MEDIUM: filters: Activate the instances inherited by dynamic backends - DOC: filters: Document how to port an existing filter - BUG/MINOR: hlua: assume proxy_find_by_id() may return NULL on previously existing server - MINOR: event_hdl: add PROXY family events - MINOR: proxy: add e_sub proxy subscrition list - MINOR: event_hdl/proxy: publish EVENT_HDL_SUB_PROXY_{ADD,DEL,PUB,UNPUB} events - MINOR: hlua: expose PROXY event family through Lua - BUG/MEDIUM: mux-h2: don't return a freed tasklet from h2_deferred_shut() - BUG/MEDIUM: mux-fcgi: don't return a freed tasklet from fcgi_deferred_shut() - BUG/MEDIUM: mux-h1: don't pass an upgraded connection to traces in h1s_destroy() - BUG/MEDIUM: mux-h2: report a dead rhttp connection in h2_wake() - BUG/MEDIUM: mux-h2: fix a possible crash on rxbuf allocation failure - MINOR: cache: Remove a useless variable in http_action_req_cache_use - BUG/MEDIUM: mux-h1: also release the embryonic stream when the error is empty - BUG/MINOR: http-fetch: don't report pseudo-headers in TCP mode - BUG/MEDIUM: mux-h1: only accept the H2 preface on the first request - MINOR: stats: report the SSL library FIPS mode in "show info" - REGTESTS: http-messaging: Fix http_fail_cnt_body to succeed with small timeouts - REGTEST: ssl: require OpenSSL 1.1.1 for crt-list ciphersuites tests - DOC: make: fix EXTRA_MAKE fragment filename - BUG/MINOR: cfgparse-global: only warn when "localpeer" is set together with -L - DOC: configuration: document AWS-LC compatibility restrictions - OPTIM/MINOR: server: restrict list usage - MINOR: server: rename list to - MINOR: server: refactor cli_find_server() - MINOR: server: extract unregistering from "delete server" CLI parser - MINOR: proxy: define purge task and purge servers list - MEDIUM: server: implement "purge server" CLI - MINOR: server: set maintenance mode on "purge server" - MINOR: proxy: yield during servers purge - MINOR: cli: refactor CLI wait command parser - MINOR: cli: implement wait srv-unknown - OPTIM/MINOR: server: remove unnecessary server lookup during purge - REGTESTS: server: test "purge server" CLI command - MEDIUM: server: implement "purge all servers" CLI - MINOR: server: yield during "purge all servers" - REGTESTS: server: test "purge all servers" CLI command - MINOR: proxy: extract proxy runtime deletion in a specific function - MEDIUM: proxy: implement purge backend - MINOR: cli: implement wait be-unknown - OPTIM/MINOR: proxy: remove unnecessary lookup during purge - REGTESTS: proxy: test "purge backend" CLI - BUG/MAJOR: mux-h2: properly handle short reads on PING frames - BUG/MAJOR: h1-htx: report an error on a too long chunk-size line --- diff --git a/CHANGELOG b/CHANGELOG index 34ac26e30..8a08c448b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,247 @@ ChangeLog : =========== +2026/10/14 : 3.5-dev9 + - CLEANUP: sym: move symbol resolution out of tools.c + - MINOR: sym: add an in-process symbol table for backtraces + - MINOR: sym: collect the symbols known to the dynamic linker + - MINOR: sym: add helpers to collect the symbols of an ELF image + - IMPORT: xz: import the xz-embedded decoder + - MEDIUM: sym: store a compressed symbol table in a loadable section + - MINOR: sym: read local symbols and debug info from ELF files + - MINOR: sym: also read the compressed symbol tables from the ELF files + - OPTIM: sym: skip the embedded table when the file provided the symbols + - MINOR: makefile: add CROSS_TOOLCHAIN to prefix the target's tools + - BUG/MINOR: proxy: add PR_CAP_LB for dynamically added backend + - BUG/MINOR: server: fix "del server" description + - BUG/MINOR: cli: update wait help usage + - BUG/MEDIUM: server: remove immediately from GUID tree on delete server + - DOC: server: explicit refcount interaction in "del server" + - MINOR: ocsp: Remove free of main structure from ssl_sock_free_ocsp_data + - MINOR: ocsp: Send OCSP response status back to caller + - MINOR: ocsp: Raise specific ocsp error code in ocsp parsing/verifying functions + - MINOR: ocsp: Dup OCSP_CERTID in ssl_ocsp_create_request_details + - MEDIUM: ocsp: Create new do-ocsp-request action + - MINOR: ocsl: Add 'inapplicable' return code to client certificate ocsp check + - DOC: ocsp: Add doc for the new 'do-ocsp-request' action + - REGTESTS: ocsp: Add 'do-ocsp-request' tests + - BUILD: ssl: fix build without USE_OPENSSL + clear_ocsp_clt_check_ctx + - DEV: sse-latency: add a latency measuring tool for SSE response streams + - MINOR: http-ana: automatically enable http-no-delay for streaming events (SSE) + - REGTESTS: cli: don't check the HAProxy string + - BUILD: Hopefully fix build on FreeBSD + - BUILD: sym: Define HA_HAVE_DL_ITERATE_PHDR on FreeBSD + - BUG/MINOR: log: fix erroneous error message in log-steps parser + - MINOR: log: add "loggers" section + - MINOR: log: support 'to' parameter for "log" directive + - MINOR: log: support explicit list for do_log_ctx() + - MINOR: log: support 'to' parameter fo do-log action + - DOC: config: document new "loggers" section and relevant uses + - MINOR: ssl: support curve fetches with AWS-LC API 30 + - BUILD: ssl: avoid mixed declarations in the AWS-LC curve fetch + - DEBUG: support reading set-dumpable from HAPROXY_FORCE_DUMPABLE + - BUG/MINOR: hq-interop: prevent double EOM on request with standalone FIN + - BUG/MINOR: ssl: fix trace crash on FE conn release in io cb + - BUG/MINOR: ssl: fix trace crash on BE conn release in io cb + - BUG/MEDIUM: ssl: crt-list ciphers ignored with AWS-LC + - BUG/MEDIUM: ssl: crt-list curves ignored with AWS-LC + - CI: github: test AWS-LC 3.x and 4.x LTS branches + - CI: github: test the latest AWS-LC release on development branches + - CI: github: cache QuicTLS builds + - CI: github: move wolfSSL 5.7.0 testing to a nightly workflow + - BUG/MEDIUM: listener: Consider maxconn before waking listeners + - BUG/MINOR: ssl: don't uppercase the native group name + - DOC: ssl: clarify the NID-based curve fetch branch + - BUG/MINOR: ssl: use standard names for X25519 and X448 groups + - MINOR: ssl: split curve names into ANSI, IANA and NIST columns + - MINOR: ssl: skip unavailable NIDs in curves2nid lookup + - MINOR: ssl: complete registered group names and library NID mappings + - MINOR: ssl: add curve2name converter + - MINOR: ssl: accept integer group IDs in curve2name + - BUG/MAJOR: mux-quic: prevent crash on QCS already set for purging + - BUG/MINOR: mux_quic: prevent purgeable QCS lingering + - BUG/MINOR: mux_quic: extend FINAL_SIZE_ERROR detection on stream + - BUG/MINOR: mux_quic: report conn error on RESET_STREAM fctl violation + - BUG/MEDIUM: mux_quic: account discarded data in connection flow control + - BUG/MINOR: mux_quic: account data in conn fctl on early detach + - BUG/MINOR: h3: reject frames with truncated header + - BUG/MINOR: h3: close connection on GOAWAY frame too long + - BUG/MINOR: h3: reject RS/SS for QPACK uni streams + - BUG/MEDIUM: mux_quic: notify stream on RESET_STREAM reception + - BUG/MINOR: ssl: Fix potential NULL-deref in "dump ssl cert" with AWS-LC + - BUG/MEDIUM: h3: fix end-of-input report on DATA wrapping + - MEDIUM: h3: do not close conn on unaligned non DATA frame + - MINOR: doc: elaborate on diagnostic mode behavior + - BUG/MEDIUM: h3: fix incorrect DATA size block on DEM FULL + - BUG/MAJOR: cfgparse: properly check userlist section when scanning keywords + - BUG/MINOR: cfgparse-global: add missing gotos to error label in max-spread-checks + - BUG/MINOR: cfgparse-global: add missing calloc() check for the global description + - BUG/MINOR: cfgparse-listen: release the previous description of the proxy + - BUG/MINOR: cfgparse-listen: fix the argument checked by "email-alert" + - BUG/MINOR: cfgparse-listen: fix quoting of the condition conflict warning + - BUG/MINOR: cfgparse-global: reject extra arguments to numa-cpu-mapping and anonkey + - BUG/MINOR: cfgparse-listen: always reject extra arguments to "persist" + - BUG/MINOR: cfgparse-listen: don't lose the errors reported while creating a proxy + - BUG/MINOR: cfgparse-listen: properly reject extra args in a backend section + - BUG/MINOR: proxy: also look for the closest option among cfg_opts3 + - BUG/MINOR: cfgparse-listen: complete the list of options for the suggestions + - CLEANUP: proxy: adapt the error message for removed "option transparent" + - MINOR: cfgparse: expose the keyword modifier to the keyword parsers + - CLEANUP: cfgparse-global: move the argument-less boolean options to a parser + - CLEANUP: cfgparse-global: move "set-dumpable" to its own parser + - CLEANUP: cfgparse-global: move "uid", "gid", "user" and "group" to its own parser + - CLEANUP: cfgparse-global: move "external-check" to its own parser + - CLEANUP: cfgparse-global: move "cluster-secret" to its own parser + - CLEANUP: cfgparse-global: move the process-wide limits to a single parser + - CLEANUP: cfgparse-global: move the compression limits to a single parser + - CLEANUP: cfgparse-global: move "ssl-server-verify" to its own parser + - CLEANUP: cfgparse-global: move "node" and "description" to their own parser + - CLEANUP: cfgparse-global: move "unix-bind" to its own parser + - CLEANUP: cfgparse-global: move the log keywords to a single parser + - CLEANUP: cfgparse-global: move the state file keywords to their own parser + - CLEANUP: cfgparse-global: move the spread-checks keywords to their own parser + - CLEANUP: cfgparse-global: move "cpu-map" to its own parser + - CLEANUP: cfgparse-global: move "anonkey" to its own parser + - CLEANUP: cfgparse-global: ask not to add new keywords in common_kw_list[] + - CLEANUP: cfgparse-global: simplify cfg_parse_global() + - MINOR: cfgparse-listen: introduce proxy_parse_removed_kw() and use it + - MEDIUM: cfgparse-listen: move removed keywords' help messages into an array + - CLEANUP: cfgparse-listen: move "disabled" and "enabled" to their own parser + - CLEANUP: cfgparse-listen: move the connection limits to thier own parser + - CLEANUP: cfgparse-listen: move the backend one-arg keywords to their own parser + - CLEANUP: cfgparse-listen: move "mode" to its own parser + - CLEANUP: cfgparse-listen: move "id" and "description" to their own parser + - CLEANUP: cfgparse-listen: move "acl" to its own parser + - CLEANUP: cfgparse-listen: move the monitor keywords to their own parser + - CLEANUP: cfgparse-listen: move the persistence keywords to their own parser + - CLEANUP: cfgparse-listen: move "capture" to its own parser + - CLEANUP: cfgparse-listen: move the log format keywords to their own parser + - CLEANUP: cfgparse-listen: add parser for "log", "log-tag" and "unique-id-header" + - CLEANUP: cfgparse-listen: move the load-balancing keywords to their own parser + - CLEANUP: cfgparse-listen: move "source" "usesrc" and "interface" to their own parser + - CLEANUP: cfgparse-listen: add parser for server/backend sekection keywords + - CLEANUP: cfgparse-listen: move the HTTP rule sets to their own parser + - CLEANUP: cfgparse-listen: move "redirect" to its own parser + - CLEANUP: cfgparse-listen: move "stick-table" to its own parser + - CLEANUP: cfgparse-listen: move "stick" to its own parser + - CLEANUP: cfgparse-listen: move "cookie" to its own parser + - CLENAUP: cfgparse-listen: move "email-alert" to its own parser + - CLEANUP: cfgparse-listen: move "stats" to its own parser + - CLENAUP: cfgparse-listen: move the "server" keywords to their own parser + - CLEANUP: cfgparse-listen: move "bind" to its own parser + - MINOR: log: add proxy_logformat_origin() to detect a proxy's log-format type + - CLEANUP: cfgparse-listen: move "option" to its own parser + - CLEANUP: cfgparse-listen: simplify the second half of cfg_parse_listen() + - MINOR: cfgparse: always suggest the section names on an unknown keyword + - CLEANUP: cfgparse: remove the unused common_kw_list[] definitions + - MEDIUM: spoe: add the "on-switching-rules" event + - BUG/MEDIUM: cli: fix the last command detection on a full command line + - REGTESTS: cli: test a command line of exactly tune.bufsize bytes + - BUG/MEDIUM: log: do not ignore the peer's shutdown in the syslog applet + - REGTESTS: log: check that a log-forward TCP session ends on client close + - BUG/MINOR: spoe: Fix the message list splice with an empty list + - BUG/MINOR: flt-decomp: Fix the decompression filter keyword list name + - MEDIUM: flt-http-comp: Enable compression directions from algorithms + - MINOR: flt-http-comp: Use compression options as filter config + - BUG/MINOR: flt-http-comp: Enable implicit filters independently per direction + - MINOR: flt-http-comp: Don't uselessly init a compression filter + - MINOR: flt-decomp: Don't instantiate a filter without applicable direction + - MINOR: bwlim: Use a different filter ID for in/out filters + - MINOR: fcgi: Move application validation to the post-check stages + - MINOR: filters: Introduce filter classes and per-side class ordering + - MINOR: filters: Add per-proxy filter instance storage and lookup + - MINOR: filters: Inherit filter instances from defaults sections + - MINOR: filters: Add instance parsers for the built-in classes + - MEDIUM: filters: Parse and finalize filter-config instances + - MINOR: filters: Add filter-enable and filter-disable directives + - MINOR: filters: Add per-side filter-sequence constraints + - MINOR: filters: Mirror implicit filters as filter instances + - MINOR: filters: Expose classes and instances through the CLI + - MINOR: filters: Reject filter-* directives in anonymous defaults + - MINOR: filters: Restrict defaults inheritance with explicit filter directives + - MINOR: filters: Reject mixing legacy and filter-* directives + - MINOR: filters: Maintain a global instance list per proxy + - MINOR: filters: Use global instance order for startup operations + - MINOR: filters: Support global instance sequencing + - MINOR: filters: Expose global filter ordering through the CLI + - MINOR: filters: Use a proxy flag to detect use of legacy 'filter' directive + - MINOR: filters: Don't finalize filter instances in legacy mode + - MINOR: filters: Add helpers to iterate and find filter configurations + - MINOR: filters: Add flt_has_filter() and use it in proxy_finalize() + - MINOR: filters: Select legacy or instance model in lifecycle callbacks + - MEDIUM: filters: Attach filter instances to streams + - MEDIUM: cache: Resolve cache rules during the check stage + - MINOR: cache: Use the filter helpers for cache checks and post-check + - MINOR: fcgi-app: Use the filter configuration helpers for lookups and checks + - MINOR: bwlim: Look up the bandwidth filter with the filter helpers + - MINOR: flt-decomp: Use the filter helpers for implicit decompression checks + - MINOR: flt-http-comp: Use the filter helpers for implicit compression checks + - MINOR: spoe: Use the filter configuration helpers for lookups and checks + - REGTESTS: filters: Add a test for per-proxy stream filter ordering + - REGTESTS: filters: Exercise Lua inheritance and state selection + - REGTESTS: filters: Exercise stream isolation across backend modes + - REGTESTS: filters: Exercise Lua callback resumption + - REGTESTS: filters: Exercise Lua filters across HTTP retries + - REGTESTS: filters: Exercise Lua probes around mixed built-in filters + - REGTESTS: filters: Exercise TCP Lua payload chains and sequencing + - REGTESTS: filters: Exercise per-thread Lua instance state + - REGTESTS: filters: Record Lua callback waits across backend EOF + - REGTESTS: filters: Check non-HTX Lua filters in HTTP chains + - MINOR: filters: Add a global option to enforce the legacy filter api + - DOC: filters: Document the filter instance mode and the legacy mode + - DOC: lua: Document the filter instance declaration of Lua filters + - CLEANUP: filters: Use the stream filter instance wording in comments + - MINOR: filters: List the filter classes in haproxy -vv + - DOC: config: Review "Supported filters" section + - MINOR: lua: Protect the common Lua state during a runtime filter deinit + - MEDIUM: stream: Hold a reference on the frontend during stream_free() + - MINOR: applet: Add a destroy callback to the applets + - BUG/MEDIUM: spoe: Let an agent outlive its applets during a backend deletion + - MEDIUM: filters: Activate the instances inherited by dynamic backends + - DOC: filters: Document how to port an existing filter + - BUG/MINOR: hlua: assume proxy_find_by_id() may return NULL on previously existing server + - MINOR: event_hdl: add PROXY family events + - MINOR: proxy: add e_sub proxy subscrition list + - MINOR: event_hdl/proxy: publish EVENT_HDL_SUB_PROXY_{ADD,DEL,PUB,UNPUB} events + - MINOR: hlua: expose PROXY event family through Lua + - BUG/MEDIUM: mux-h2: don't return a freed tasklet from h2_deferred_shut() + - BUG/MEDIUM: mux-fcgi: don't return a freed tasklet from fcgi_deferred_shut() + - BUG/MEDIUM: mux-h1: don't pass an upgraded connection to traces in h1s_destroy() + - BUG/MEDIUM: mux-h2: report a dead rhttp connection in h2_wake() + - BUG/MEDIUM: mux-h2: fix a possible crash on rxbuf allocation failure + - MINOR: cache: Remove a useless variable in http_action_req_cache_use + - BUG/MEDIUM: mux-h1: also release the embryonic stream when the error is empty + - BUG/MINOR: http-fetch: don't report pseudo-headers in TCP mode + - BUG/MEDIUM: mux-h1: only accept the H2 preface on the first request + - MINOR: stats: report the SSL library FIPS mode in "show info" + - REGTESTS: http-messaging: Fix http_fail_cnt_body to succeed with small timeouts + - REGTEST: ssl: require OpenSSL 1.1.1 for crt-list ciphersuites tests + - DOC: make: fix EXTRA_MAKE fragment filename + - BUG/MINOR: cfgparse-global: only warn when "localpeer" is set together with -L + - DOC: configuration: document AWS-LC compatibility restrictions + - OPTIM/MINOR: server: restrict list usage + - MINOR: server: rename list to + - MINOR: server: refactor cli_find_server() + - MINOR: server: extract unregistering from "delete server" CLI parser + - MINOR: proxy: define purge task and purge servers list + - MEDIUM: server: implement "purge server" CLI + - MINOR: server: set maintenance mode on "purge server" + - MINOR: proxy: yield during servers purge + - MINOR: cli: refactor CLI wait command parser + - MINOR: cli: implement wait srv-unknown + - OPTIM/MINOR: server: remove unnecessary server lookup during purge + - REGTESTS: server: test "purge server" CLI command + - MEDIUM: server: implement "purge all servers" CLI + - MINOR: server: yield during "purge all servers" + - REGTESTS: server: test "purge all servers" CLI command + - MINOR: proxy: extract proxy runtime deletion in a specific function + - MEDIUM: proxy: implement purge backend + - MINOR: cli: implement wait be-unknown + - OPTIM/MINOR: proxy: remove unnecessary lookup during purge + - REGTESTS: proxy: test "purge backend" CLI + - BUG/MAJOR: mux-h2: properly handle short reads on PING frames + - BUG/MAJOR: h1-htx: report an error on a too long chunk-size line + 2026/10/01 : 3.5-dev8 - BUG/MEDIUM: task: Do not destroy a task that is not ours in task_destroy - BUG/MEDIUM: http-client: Don't use the httpclient context if it was released diff --git a/VERDATE b/VERDATE index 3c1758edb..5d4edda6c 100644 --- a/VERDATE +++ b/VERDATE @@ -1,2 +1,2 @@ $Format:%ci$ -2026/10/01 +2026/10/14 diff --git a/VERSION b/VERSION index e8fe1348e..b079519a1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.5-dev8 +3.5-dev9 diff --git a/doc/configuration.txt b/doc/configuration.txt index 419781bd7..8aad178ea 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -3,7 +3,7 @@ Configuration Manual ---------------------- version 3.5 - 2026/10/01 + 2026/10/14 This document covers the configuration language as implemented in the version