]> git.kaiwu.me - haproxy.git/commit
[RELEASE] Released version 3.5-dev9 v3.5-dev9
authorWilly Tarreau <w@1wt.eu>
Wed, 14 Oct 2026 14:03:07 +0000 (16:03 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 14 Oct 2026 14:03:07 +0000 (16:03 +0200)
commit37f3ad8aa35bb34b2363b73541780df6c7226270
tree9903ec6f8a07433849ed020c3a018aa9a9721c9d
parent2e4ba6a570809bcfb4e2ba04948e64e5d07622b3
[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 <loggers> 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 <all_servers> list usage
    - MINOR: server: rename <all_servers> list to <servers_to_init>
    - 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
CHANGELOG
VERDATE
VERSION
doc/configuration.txt