HAProxy known bugs for maintenance branch 2.9 :  0 

This is maintenance branch 2.9 whose latest version is 2.9.15. If your version is not the last one in the maintenance branch, you are missing fixes for known bugs, and by not updating you are needlessly taking the responsibility for the risk of unexpected service outages and exposing your web site to possible security issues.

The HAProxy development team takes a great care of maintaining stable versions so that all users can apply bug fixes without having to take the risk of upgrading to a new branch. In turn users are expected to apply the fixes when the development team estimates that they were worth being backported to stable branches. In short, if you are running any 2.9 version other than 2.9.15, you're running with known bugs.

Quick links

Versions available in this branch

This branch contains the following releases :

DateVersionComment
2025-03-212.9.15 ⇐ last
2025-01-292.9.14 
2024-12-122.9.13 
2024-11-082.9.12 
2024-09-192.9.11 
2024-09-032.9.10 
2024-06-142.9.9 
2024-06-112.9.8 
2024-04-052.9.7 
2024-02-262.9.6 
2024-02-152.9.5 
2024-01-312.9.4 
2024-01-182.9.3 
2024-01-112.9.2 
2023-12-152.9.1 
2023-12-052.9.0 

Fixes for known bugs pending in this branch since the last release (2.9.15)

These fixes have already been queued for the next 2.9 release but no version was released with them yet. Note that fixes are backported several at a time from the development branch to maintenance branches, and the absence of a fix here doesn't mean none will be issued soon.

Bugs are almost always tagged with a severity (some people forget the severity tag when the bug is minor). The following severities are used :

Total known bugs in the latest version of this branch by category :

TotalCRITICALMAJORMEDIUMMINOR
0 0 0 0 0

Click on the subjects below to get the full description of the bug :

Merge dateSubject - Severity (minor, medium, major, critical)

Known bugs fixed in the development branch after the last commit in this branch

It is important to understand that not all of these commits are necessarily relevant to this version, but clicking on them will show the bug description. All fixes are made first in the development branch and then backported to the maintenance branches. This ensures no fix is lost when upgrading. If a fix was marked for backporting to this branch and is not there yet, it's likely that it is still missing. Do not hesitate to ask on the haproxy mailing list if you feel like a fix has been skipped.

DateSubject
2025-06-13BUG/MINOR: quic: don't restrict reception on backend privileged ports
2025-06-13BUG/MINOR: http-ana: Properly handle keep-query redirect option if no QS
2025-06-12BUG/MINOR: quic: work around NEW_TOKEN parsing error on backend side
2025-06-12BUG/MINOR: quic: prevent crash on startup with -dt
2025-06-12BUG/MINOR: quic-be: CID double free upon qc_new_conn() failures
2025-06-12BUG/MEDIUM: mux-quic: adjust wakeup behavior
2025-06-12BUG/MINOR: hlua: Don't forget the return statement after a hlua_yieldk()
2025-06-11BUG/MINOR: config/server: reject QUIC addresses
2025-06-10BUG/MINIR: h1: Fix doc of 'accept-unsafe-...-request' about URI parsing
2025-06-10BUG/MEDIUM: fd: Use the provided tgid in fd_insert() to get tgroup_info
2025-06-06BUG/MINOR: quic: Missing SSL session object freeing
2025-06-06BUG/MINOR: config: fix arg number reported on empty arg warning
2025-06-06BUG/MINOR: config: emit warning for empty args only in discovery mode
2025-06-05BUG/MEDIUM: cli: Properly parse empty lines and avoid crashed
2025-06-04BUG/MINOR: mux-spop: Fix null-pointer deref on SPOP stream allocation failure
2025-06-03DEBUG: check: Add the healthcheck's expiration date in the trace messags
2025-06-03BUG/MEDIUM: check: Requeue healthchecks on I/O events to handle check timeout
2025-06-03BUG/MAJOR: leastconn: Protect tree_elt with the lbprm lock
2025-05-27BUG/MEDIUM: httpclient: Throw an error if an lua httpclient instance is reused
2025-05-27BUG/MEDIUM: hlua: Fix receive API for TCP applets to properly handle shutdowns
2025-05-27BUG/MEDIUM: hlua: Fix getline() for TCP applets to work with applet's buffers
2025-05-26BUG/MEDIUM: hlua: Properly detect shudowns for TCP applets based on the new API
2025-05-26BUG/MEDIUM: cli/ring: Properly handle shutdown in "show event" I/O handler
2025-05-26BUG/MEDIUM: h3: Declare absolute URI as normalized when a :authority is found
2025-05-26BUG/MINOR: h3: Set HTX flags corresponding to the scheme found in the request
2025-05-23BUG/MAJOR: cache: Crash because of wrong cache entry deleted
2025-05-22BUG/MEDIUM: server: fix potential null-deref after previous fix
2025-05-22BUG/MEDIUM: server: fix crash after duplicate GUID insertion
2025-05-21BUG/MINOR: acme: fix formatting issue in error and logs
2025-05-21BUG/MEDIUM: acme: check if acme domains are configured
2025-05-21BUG/MEDIUM: mux-quic: fix BUG_ON() on rxbuf alloc error
2025-05-20BUG/MEDIUM: wdt: always ignore the first watchdog wakeup
2025-05-19BUG/MAJOR: leastconn: never reuse the node after dropping the lock
2025-05-19BUG/MINOR: quic: fix crash on quic_conn alloc failure
2025-05-17BUG/MAJOR: queue: properly keep count of the queue length
2025-05-17BUG/MAJOR: leastconn: do not loop forever when facing saturated servers
2025-05-16BUG/MEDIUM: h1/h2/h3: reject forbidden chars in the Host header field
2025-05-16BUG/MINOR: h3: don't insert more than one Host header
2025-05-16BUG/MEDIUM: stconn: Disable 0-copy forwarding for filters altering the payload
2025-05-15BUG/MEDIUM: peers: also limit the number of incoming updates
2025-05-15BUG/MINOR: sink: detect and warn when using "send-proxy" options with ring servers
2025-05-14DEBUG: mux-spop: Review some trace messages to adjust the message or the level
2025-05-14BUG/MEDIUM: mux-spop; Don't report a read error if there are pending data
2025-05-14BUG/MEDIUM: mux-spop: Properly detect truncated frames on demux to report error
2025-05-14BUG/MEDIUM: spop-conn: Report short read for partial frames payload
2025-05-14BUG/MEDIUM: mux-spop: Properly handle CLOSING state
2025-05-13BUG/MEDIUM: mux-spop: Remove frame parsing states from the SPOP connection state
2025-05-13BUG/MINOR: mux-spop: Don't open new streams for SPOP connection on error
2025-05-13BUG/MINOR: mux-spop: Make the demux stream ID a signed integer
2025-05-13BUG/MINOR: mux-spop: Don't report error for stream if ACK was already received
2025-05-13BUG/MINOR: spoe: Don't report error on applet release if filter is in DONE state
2025-05-13BUG/MINOR: hlua: Fix Channel:data() and Channel:line() to respect documentation
2025-05-13BUG/MINOR: cpu-topo: fix group-by-cluster policy for disordered clusters
2025-05-12BUG/MEDIUM: h2/h3: reject some forbidden chars in :authority before reassembly
2025-05-12BUG/MINOR: server: perform lbprm deinit for dynamic servers
2025-05-12BUG/MINOR: server: dont depend on proxy for server cleanup in srv_drop()
2025-05-12BUG/MINOR: cfgparse: improve the empty arg position report's robustness
2025-05-12BUG/MINOR: tools: improve parse_line()'s robustness against empty args
2025-05-12BUG/MINOR: threads: fix soft-stop without multithreading support
2025-05-09BUG/MINOR: ssl/ckch: always ha_freearray() the previous entry during parsing
2025-05-09BUG/MINOR: ssl/ckch: always free() the previous entry during parsing
2025-05-09BUG/MINOR: ssl: prevent multiple 'crt' on the same ssl-f-use line
2025-05-09BUG/MINOR: ssl: doesn't fill conf->crt with first arg
2025-05-09DEBUG: pools: add a new integrity mode "backup" to copy the released area
2025-05-09DEBUG: pool: permit per-pool UAF configuration
2025-05-09BUG/MEDIUM: mux-quic: fix crash on invalid fctl frame dereference
2025-05-09BUG/MINOR: cfgparse: consider the special case of empty arg caused by \x00
2025-05-09BUG/MEDIUM: quic: free stream_desc on all data acked
2025-05-08BUG/MEDIUM: stick-table: always remove update before adding a new one
2025-05-08BUG/MINOR: cli: fix too many args detection for commands
2025-05-07BUG/MEDIUM: stick-tables: close a tiny race in __stksess_kill()
2025-05-07BUG/MEDIUM: peers: hold the refcnt until updating ts->seen
2025-05-07BUG/MINOR: quic: reject invalid max_udp_payload size
2025-05-07BUG/MINOR: quic: fix TP reject on invalid max-ack-delay
2025-05-07BUG/MINOR: quic: use proper error code on invalid received TP value
2025-05-07BUG/MINOR: quic: reject retry_source_cid TP on server side
2025-05-07BUG/MINOR: quic: use proper error code on invalid server TP
2025-05-07BUG/MINOR: quic: use proper error code on missing CID in TPs
2025-05-07BUG/MINOR: tools: only fill first empty arg when not out of range
2025-05-06BUG/MINOR: ssl: can't use crt-store some certificates in ssl-f-use
2025-05-06BUG/MAJOR: queue: lock around the call to pendconn_process_next_strm()
2025-05-06Revert "BUG/MEDIUM: mux-spop: Handle CLOSING state and wait for AGENT DISCONNECT frame"
2025-05-06BUG/MINOR: proxy: only use proxy_inc_fe_cum_sess_ver_ctr() with frontends
2025-05-06DEBUG: threads: display held locks in threads dumps
2025-05-05DEBUG: threads: merge successive idempotent lock operations in history
2025-05-05DEBUG: threads: don't keep lock label "OTHER" in the per-thread history
2025-05-05BUG/MINOR: tools: make parseline report the required space for the trailing 0
2025-05-05BUG/MINOR: tools: always terminate empty lines
2025-05-05BUG/MINOR: tools: do not create an empty arg from trailing spaces
2025-05-02BUG/MINOR: acme/cli: don't output error on success
2025-05-02BUG/MEDIUM: stktable: fix sc_*() BUG_ON() regression with ctx > 9
2025-05-02BUG/MAJOR: tasks: fix task accounting when killed
2025-05-02BUG/MEDIUM: quic: Let it be known if the tasklet has been released.
2025-05-02BUG/MINOR: acme: reinit the retries only at next request
2025-04-30BUG/MEDIUM: connections: Report connection closing in conn_create_mux()
2025-04-30BUG/MINOR: mux-spop: Use the right bitwise operator in spop_ctl()
2025-04-30BUG/MINOR: mux-h1: Fix trace message in h1_detroy() to not relay on connection
2025-04-30BUG/MINOR: mux-h1: Don't pretend connection was released for TCP>H1>H2 upgrade
2025-04-30BUG/MEDIUM: mux-spop: Handle CLOSING state and wait for AGENT DISCONNECT frame
2025-04-30BUG/MEDIUM: mux-spop: Wait end of handshake to declare a spop connection ready
2025-04-29BUG/MINOR: dns: prevent ds accumulation within dss
2025-04-29BUG/MINOR: dns: add tempo between 2 connection attempts for dns servers
2025-04-29BUG/MINOR: acme: remove references to virt@acme
2025-04-29BUG/MINOR: quic: ensure cwnd limits are always enforced
2025-04-29BUG/MINOR: acme: creating an account should not end the task
2025-04-29BUG/MINOR: mux-h2: fix the offset of the pattern for the ping frame
2025-04-29BUG/MINOR: acme: does not try to unlock after a failed trylock
2025-04-28BUG/MINOR: ssl/acme: free EVP_PKEY upon error
2025-04-28MEDIUM: thread: set DEBUG_THREAD to 1 by default
2025-04-28MEDIUM: threads: keep history of taken locks with DEBUG_THREAD > 0
2025-04-28MINOR: threads: turn the full lock debugging to DEBUG_THREAD=2
2025-04-28MINOR: threads: prepare DEBUG_THREAD to receive more values
2025-04-25BUG/MAJOR: listeners: transfer connection accounting when switching listeners
2025-04-25BUG/MAJOR: tasklets: Make sure he tasklet can't run twice
2025-04-25BUG/MINOR: master/cli: only parse the '@@' prefix on complete lines
2025-04-25Revert "BUG/MINOR: master/cli: properly trim the '@@' process name in error messages"
2025-04-25BUG/MEDIUM: cli: Handle applet shutdown when waiting for a command line
2025-04-24BUG/MINOR: master/cli: properly trim the '@@' process name in error messages
2025-04-24BUG/MINOR: ring: Fix I/O handler of "show event" command to not rely on the SC
2025-04-24BUG/MINOR: hlua: Fix I/O handler of lua CLI commands to not rely on the SC
2025-04-24BUG/MINOR: cli: Issue an error when too many args are passed for a command
2025-04-24BUG/MINOR: mux-quic: do not decode if conn in error
2025-04-24BUG/MINOR: mux-quic: fix possible infinite loop during decoding
2025-04-22BUG/MEDIUM: mux-spop: Respect the negociated max-frame-size value to send frames
2025-04-18BUG/MINOR: proxy: always detach a proxy from the names tree on free()
2025-04-18BUG/MINOR: quic: do not crash on CRYPTO ncbuf alloc failure
2025-04-17BUG/MINOR: debug: detect and prevent re-entrance in ha_thread_dump_fill()
2025-04-17BUG/MINOR: wdt/debug: avoid signal re-entrance between debugger and watchdog
2025-04-17BUG/MINOR debug: fix !USE_THREAD_DUMP in ha_thread_dump_fill()
2025-04-17BUG/MINOR: threads: set threads_idle and threads_harmless even with no threads
2025-04-17BUG/MINOR: mux-h2: do not apply timer on idle backend connection
2025-04-17BUG/MINOR: rhttp: ensure GOAWAY can be emitted after reversal
2025-04-17BUG/MINOR: rhttp: fix reconnect if timeout connect unset
2025-04-17BUG/MINOR: mux-h2: prevent past scheduling with idle connections
2025-04-17BUG/MEDIUM: hlua: fix hlua_applet_{http,tcp}_fct() yield regression (lost data)
2025-04-16BUG/MINOR: h3: reject request URI with invalid characters
2025-04-16BUG/MINOR: h3: reject invalid :path in request
2025-04-16BUG/MINOR: h3: filter upgrade connection header
2025-04-16BUG/MEDIUM: h3: trim whitespaces in header value prior to QPACK encoding
2025-04-16BUG/MEDIUM: h3: trim whitespaces when parsing headers value
2025-04-16BUG/MINOR: acme/cli: fix certificate name in error message
2025-04-16BUG/MINOR: acme: fix the exponential backoff of retries
2025-04-16BUG/MINOR: acme: key not restored upon error in acme_res_certificate() V2
2025-04-16Revert "BUG/MINOR: acme: key not restored upon error in acme_res_certificate()"
2025-04-15BUG/MEDIUM: http-ana: Report 502 from req analyzer only during rsp forwarding
2025-04-15BUG/MINOR: http-ana: Properly detect client abort when forwarding the response
2025-04-15BUILD: incompatible pointer type suspected with -DDEBUG_UNIT
2025-04-15BUG/MINOR: acme: fix possible NULL deref
2025-04-14DEBUG: counters: add the ability to enable/disable updating the COUNT_IF counters
2025-04-14DEBUG: counters: make COUNT_IF() only appear at DEBUG_COUNTERS>=1
2025-04-14DEBUG: rename DEBUG_GLITCHES to DEBUG_COUNTERS and enable it by default
2025-04-14DEBUG: init: report invalid characters in debug description strings
2025-04-14BUG/MINOR: debug: remove the trailing \n from BUG_ON() statements
2025-04-14BUG/MINOR: thread: protect thread_cpus_enabled_at_boot with USE_THREAD
2025-04-14BUG/MINOR: acme: key not restored upon error in acme_res_certificate()
2025-04-12BUG/MINOR: cpu-topo: check the correct variable for NULL after malloc()
2025-04-12BUG/MINOR: acme: ckch_conf_acme_init() when no filename
2025-04-10BUG/MINOR: hlua: fix invalid errmsg use in hlua_init()
2025-04-09BUG/MINOR: backend: do not use the source port when hashing clientip
2025-04-07BUG/MEDIUM: sample: fix risk of overflow when replacing multiple regex back-refs
2025-04-07BUG/MINOR: log: fix CBOR encoding with LOG_VARTEXT_START() + lf_encode_chunk()
2025-04-03BUG/MINOR: hlua_fcn: fix potential UAF with Queue:pop_wait()
2025-04-03BUG/MINOR: server: ensure check-reuse-pool is copied from default-server
2025-04-03BUG/MEDIUM: peers: prevent learning expiration too far in futur from unsync node
2025-04-03BUG/MINOR: peers: fix expire learned from a peer not converted from ms to ticks
2025-04-03BUG/MEDIUM: stream: Fix a possible freeze during a forced shut on a stream
2025-04-02BUG/MEDIUM: backend: fix reuse with set-dst/set-dst-port
2025-04-02BUG/MINOR: backend: do not overwrite srv dst address on reuse
2025-04-02BUG/MINOR: rhttp: fix incorrect dst/dst_port values
2025-04-02BUG/MEDIUM: leastconn: Don't try to reposition if the server is down
2025-04-02BUG/MINOR: ssl/ckch: leak in error path
2025-04-01BUG/MINOR: config: silence .notice/.warning/.alert in discovery mode
2025-03-27BUG/MINOR: log: fix gcc warn about truncating NUL terminator while init char arrays

Back to the list of branches and versions
Back to the HAProxy page