HAProxy known bugs for version v1.9.9 (maintenance branch 1.9)

This version (1.9.9) is a release belonging to maintenance branch 1.9 whose latest version is 1.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.

Quick links

Other versions in the same branch

This branch contains the following releases :

DateVersionComment
2020-04-021.9.15 ⇐ last
2020-02-131.9.14 
2019-11-251.9.13 
2019-10-241.9.12 
2019-09-271.9.11 
2019-08-081.9.10 
2019-07-231.9.9 ⇐ yours
2019-05-131.9.8 
2019-04-251.9.7 
2019-03-291.9.6 
2019-03-191.9.5 
2019-02-061.9.4 
2019-01-291.9.3 
2019-01-161.9.2 
2019-01-081.9.1 
2018-12-191.9.0 

Known bugs affecting this version, and already fixed in the maintenance branch

These fixes have already been queued for a more recent 1.9 version. Some of them might have already been released in a more recent version than yours, and other ones might still be pending in the maintenance branch for a future release. The list may be empty if you're already on the latest version and no new fix was backported.

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 this version by category :

TotalCRITICALMAJORMEDIUMMINOR
204 1 17 69 117

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

Merge dateSubject - Severity (minor, medium, major, critical)
2020-04-02BUG/CRITICAL: hpack: never index a header into the headroom after wrapping
2020-04-01BUG/MINOR: http-ana: Reset request analysers on error when waiting for response
2020-04-01BUG/MINOR: filters: Forward everything if no data filters are called
2020-04-01BUG/MINOR: filters: Use filter offset to decude the amount of forwarded data
2020-04-01BUG/MINOR: http_ana: make sure redirect flags don't have overlapping bits
2020-04-01BUG/MEDIUM: http: unbreak redirects in legacy mode
2020-04-01BUG/MINOR: stats: Fix color of draining servers on stats page
2020-04-01BUG/MINOR: peers: avoid an infinite loop with peers_fe is NULL
2020-04-01BUG/MINOR: peers: init bind_proc to 1 if it wasn't initialized
2020-04-01BUG/MINOR: connections: Make sure we free the connection on failure.
2020-04-01BUG/MINOR: haproxy: always initialize sleeping_thread_mask
2020-04-01BUG/MINOR: rules: Increment be_counters if backend is assigned for a silent-drop
2020-04-01BUG/MINOR: rules: Preserve FLT_END analyzers on silent-drop action
2020-04-01BUG/MINOR: http-rules: Fix a typo in the reject action function
2020-04-01BUG/MINOR: http-rules: Preserve FLT_END analyzers on reject action
2020-04-01BUG/MINOR: lua: Ignore the reserve to know if a channel is full or not
2020-04-01BUG/MINOR: http-ana: Reset request analysers on a response side error
2020-04-01BUG/MAJOR: proxy_protocol: Properly validate TLV lengths
2020-04-01BUG/MAJOR: list: fix invalid element address calculation
2020-04-01BUG/MINOR: dns: ignore trailing dot
2020-04-01BUG/MINOR: sample: Make sure to return stable IDs in the unique-id fetch
2020-04-01BUG/MINOR: connection: make sure to correctly tag local PROXY connections
2020-04-01BUG/MEDIUM: ssl: fix several bad pointer aliases in a few sample fetch functions
2020-04-01BUG/MINOR: sample: fix the json converter's endian-sensitivity
2020-04-01BUG/MEDIUM: ebtree: don't set attribute packed without unaligned access support
2020-04-01BUG/MEDIUM: shctx: make sure to keep all blocks aligned
2020-02-21BUG/MAJOR: http-ana: Always abort the request when a tarpit is triggered
2020-02-21BUG/MINOR: http-ana: Matching on monitor-uri should be case-sensitive
2020-02-21BUG/MINOR: filters: Count HTTP headers as filtered data but don't forward them
2020-02-21BUG/MINOR: namespace: avoid closing fd when socket failed in my_socketat
2020-02-12BUG/MINOR: tcp: don't try to set defaultmss when value is negative
2020-02-12BUG/MINOR: tcp: avoid closing fd when socket failed in tcp_bind_listener
2020-02-12BUG/MINOR: listener: enforce all_threads_mask on bind_thread on init
2020-02-12BUG/MEDIUM: listener: only consider running threads when resuming listeners
2020-02-11BUG/MINOR: dns: allow 63 char in hostname
2020-02-11BUG/MINOR: unix: better catch situations where the unix socket path length is close to the limit
2020-02-04BUG/MINOR: ssl: we may only ignore the first 64 errors
2020-02-04BUG/MAJOR: memory: Don't forget to unlock the rwlock if the pool is empty.
2020-02-04BUG/MEDIUM: memory: Add a rwlock before freeing memory.
2020-02-04BUG/MEDIUM: memory_pool: Update the seq number in pool_flush().
2020-02-04BUG/MINOR: connection: fix ip6 dst_port copy in make_proxy_line_v2
2020-02-04BUG/MEDIUM: pipe: fix a use-after-free in case of pipe creation error
2020-01-24BUG/MINOR: dns: allow srv record weight set to 0
2020-01-24BUG/MEDIUM: mux-h2: make sure we don't emit TE headers with anything but "trailers"
2020-01-24BUG/MEDIUM: 0rtt: Only consider the SSL handshake.
2020-01-23BUG/MINOR: http_act: don't check capture id in backend
2020-01-23BUG/MINOR: tcp-rules: Fix memory releases on error path during action parsing
2020-01-23BUG/MINOR: stick-table: Use MAX_SESS_STKCTR as the max track ID during parsing
2020-01-23BUG/MINOR: http-rules: Remove buggy deinit functions for HTTP rules
2020-01-23BUG/MINOR: http-ana/filters: Wait end of the http_end callback for all filters
2020-01-20BUG/MINOR: 51d: Fix bug when HTX is enabled
2020-01-20BUG/MINOR: dns: Make dns_query_id_seed unsigned
2020-01-20BUG/MINOR: cache: Fix leak of cache name in error path
2020-01-20BUG/MINOR: pattern: handle errors from fgets when trying to load patterns
2020-01-20BUG/MINOR: stream: don't mistake match rules for store-request rules
2020-01-20BUG/MEDIUM: cli: _getsocks must send the peers sockets
2020-01-20BUG/MAJOR: hashes: fix the signedness of the hash inputs
2020-01-20BUG/MEDIUM: mux_h1: Don't call h1_send if we subscribed().
2020-01-20BUG/MEDIUM: mworker: remain in mworker mode during reload
2020-01-20BUG/MEDIUM: mux-h2: fix missing test on sending_list in previous patch
2020-01-20BUG/MINOR: mux-h2: use a safe list_for_each_entry in h2_send()
2020-01-09BUG/MEDIUM: session: do not report a failure when rejecting a session
2020-01-09BUG/MINOR: channel: inject output data at the end of output
2020-01-09BUG/MEDIUM: http-ana: Truncate the response when a redirect rule is applied
2020-01-09BUG/MINOR: proxy: Fix input data copy when an error is captured
2020-01-09BUG/MINOR: h1: Report the right error position when a header value is invalid
2020-01-09BUG/MINOR: checks: refine which errno values are really errors.
2019-12-20BUG/MINOR: ssl: openssl-compat: 1.9 uses OPENSSL_VERSION, not HA_OPENSSL_VERSION
2019-12-20BUG/MINOR: ssl: openssl-compat: Fix getm_ defines
2019-12-20BUG/MEDIUM: fd/threads: fix a concurrency issue between add and rm on the same fd
2019-12-19BUG/MAJOR: task: add a new TASK_SHARED_WQ flag to fix foreing requeuing
2019-12-19BUG/MEDIUM: ssl: Don't set the max early data we can receive too early.
2019-12-19BUG/MINOR: sample: always check converters' arguments
2019-12-19BUG/MINOR: sample: fix the closing bracket and LF in the debug converter
2019-12-11BUG/MINOR: listener: fix off-by-one in state name check
2019-12-11BUG/MINOR: server: make "agent-addr" work on default-server line
2019-12-11BUG/MINOR: listener: do not immediately resume on transient error
2019-12-11BUG/MINOR: mworker: properly pass SIGTTOU/SIGTTIN to workers
2019-12-11BUG/MINOR: log: fix minor resource leaks on logformat error path
2019-12-11BUG/MINOR: tasks: only requeue a task if it was already in the queue
2019-12-11BUG/MEDIUM: kqueue: Make sure we report read events even when no data.
2019-12-10BUG/MEDIUM: proto_udp/threads: recv() and send() must not be exclusive.
2019-12-10BUG/MAJOR: dns: add minimalist error processing on the Rx path
2019-12-10BUG/MEDIUM: listener/threads: fix a remaining race in the listener's accept()
2019-12-10BUG/MINOR: listener: also clear the error flag on a paused listener
2019-12-10BUG/MINOR: listener/threads: always use atomic ops to clear the FD events
2019-12-10BUG/MINOR: proxy: make soft_stop() also close FDs in LI_PAUSED state
2019-12-06BUG/MEDIUM: checks: Make sure we set the task affinity just before connecting.
2019-12-06BUG/MEDIUM: tasks: Make sure we switch wait queues in task_set_affinity().
2019-12-05BUG/MINOR: mux-h1: Fix conditions to know whether or not we may receive data
2019-12-05BUG/MINOR: mux-h1: Don't rely on CO_FL_SOCK_RD_SH to set H1C_F_CS_SHUTDOWN
2019-12-05BUG/MEDIUM: mux-h1: Never reuse H1 connection if a shutw is pending
2019-12-05BUG/MINOR: ssl: certificate choice can be unexpected with openssl >= 1.1.1
2019-12-05BUG/MEDIUM: listener/thread: fix a race when pausing a listener
2019-12-05BUG/MEDIUM: stream-int: don't subscribed for recv when we're trying to flush data
2019-12-05BUG/MEDIUM: stream: address a very rare unhandled connection issue
2019-11-29BUG/MINOR: http-htx: Don't make http_find_header() fail if the value is empty
2019-11-25BUG/MINOR: stream: init variables when the list is empty
2019-11-25BUG/MAJOR: mux-h2: don't try to decode a response HEADERS frame in idle state
2019-11-25BUG/MAJOR: h2: make header field name filtering stronger
2019-11-25BUG/MAJOR: h2: reject header values containing invalid chars
2019-11-25BUG/MINOR: cli: fix out of bounds in -S parser
2019-11-20BUG/MINOR: stream-int: Fix si_cs_recv() return value
2019-11-20BUG/MINOR: mux-h1: Fix tunnel mode detection on the response path
2019-11-20BUG/MEDIUM: stream-int: Don't loose events on the CS when an EOS is reported
2019-11-20BUG/MINOR: ssl: fix crt-list neg filter for openssl < 1.1.1
2019-11-20BUG/MINOR: mux-h1: Don't set CS_FL_EOS on a read0 when receiving data to pipe
2019-11-20BUG/MEDIUM: filters: Don't call TCP callbacks for HTX streams
2019-11-15BUG/MINOR: log: limit the size of the startup-logs
2019-11-15BUG/MEDIUM: listeners: always pause a listener on out-of-resource condition
2019-11-15BUG/MEDIUM: Make sure we leave the session list in session_free().
2019-11-14BUG/MINOR: queue/threads: make the queue unlinking atomic
2019-11-07BUG: dns: timeout resolve not applied for valid resolutions
2019-11-07BUG/MEDIUM: stream: Be sure to release allocated captures for TCP streams
2019-11-06BUG/MEDIUM: stream: Be sure to support splicing at the mux level to enable it
2019-11-06BUG/MEDIUM: mux-h1: Disable splicing for chunked messages
2019-11-06BUG/MEDIUM: mux-h2: immediately report connection errors on streams
2019-11-06BUG/MEDIUM: mux-h2: immediately remove a failed connection from the idle list
2019-11-06BUG/MEDIUM: mux-h2: report no available stream on a connection having errors
2019-11-06BUG/MINOR: config: Update cookie domain warn to RFC6265
2019-11-06BUG/MEDIUM: servers: Only set SF_SRV_REUSED if the connection if fully ready.
2019-11-06BUG/MINOR: spoe: fix off-by-one length in UUID format string
2019-10-28BUG/MAJOR: stream-int: Don't receive data from mux until SI_ST_EST is reached
2019-10-28BUG/MINOR: cli: don't call the kw->io_release if kw->parse failed
2019-10-28BUG/MINOR: mux-h2: do not emit logs on backend connections
2019-10-23BUG/MEDIUM: pattern: make the pattern LRU cache thread-local and lockless
2019-10-23BUG/MINOR: stick-table: fix an incorrect 32 to 64 bit key conversion
2019-10-22BUG/MINOR: ssl: fix memcpy overlap without consequences.
2019-10-22BUG/MINOR: mux-h2: also make sure blocked legacy connections may expire
2019-10-22BUG/MAJOR: mux-h2: fix incorrect backport of connection timeout fix
2019-10-21BUG/MINOR: sample: Make the `field` converter compatible with `-m found`
2019-10-21BUG/MINOR: cache: alloc shctx after check config
2019-10-21BUG/MINOR: stick-table: Never exceed (MAX_SESS_STKCTR-1) when fetching a stkctr
2019-10-21BUG/MINOR: ssl: Fix fd leak on error path when a TLS ticket keys file is parsed
2019-10-21BUG/MINOR: mworker/cli: reload fail with inherited FD
2019-10-18BUG/MEDIUM: ssl: 'tune.ssl.default-dh-param' value ignored with openssl > 1.1.1
2019-10-18BUG/MEDIUM: mux_pt: Only call the wake emthod if nobody subscribed to receive.
2019-10-18BUG/MEDIUM: mux_pt: Don't destroy the connection if we have a stream attached.
2019-10-18BUG/MAJOR: idle conns: schedule the cleanup task on the correct threads
2019-10-17BUG/MEDIUM: mux_pt: Make sure we don't have a conn_stream before freeing.
2019-10-17BUG/MINOR: tcp: Don't alter counters returned by tcp info fetchers
2019-10-17BUG/MINOR: mworker/ssl: close openssl FDs unconditionally
2019-10-16BUG/MINOR: http-htx: Properly set htx flags on error files to support keep-alive
2019-10-16BUG/MINOR: WURFL: fix send_log() function arguments
2019-10-16BUG/MINOR: mux-h1: Capture ignored parsing errors
2019-10-16BUG/MINOR: mux-h1: Mark the output buffer as full when the xfer is interrupted
2019-10-16BUG/MINOR: chunk: Fix tests on the chunk size in functions copying data
2019-10-16BUG/MEDIUM: htx: Catch chunk_memcat() failures when HTX data are formatted to h1
2019-10-16BUG/MINOR: ssl: abort on sni_keytypes allocation failure
2019-10-16BUG/MINOR: ssl: free the sni_keytype nodes
2019-10-16BUG/MINOR: ssl: abort on sni allocation failure
2019-10-11BUG/MEDIUM: cache: make sure not to cache requests with absolute-uri
2019-10-11BUG/MEDIUM: mux-h2: do not enforce timeout on long connections
2019-10-11BUG/MINOR: lua: Properly initialize the buffer's fields for string samples in hlua_lua2(smp|arg)
2019-09-27BUG/MEDIUM: namespace: fix fd leak in master-worker mode
2019-09-27BUG/MEDIUM: spoe: Use a different engine-id per process
2019-09-27BUG/MAJOR: mux_h2: Don't consume more payload than received for skipped frames
2019-09-27BUG/MINOR: mux-h2: Use the dummy error when decoding headers for a closed stream
2019-09-27BUG/MEDIUM: mux-h2: don't reject valid frames on closed streams
2019-09-27BUG/MEDIUM: namespace: close open namespaces during soft shutdown
2019-09-27BUG/MINOR: mux-h2: do not wake up blocked streams before the mux is ready
2019-09-27BUG/MEDIUM: check/threads: make external checks run exclusively on thread 1
2019-09-23BUG/MAJOR: mux-h2: Handle HEADERS frames received after a RST_STREAM frame
2019-09-13BUG/MINOR: Missing stat_field_names (since f21d17bb)
2019-09-13BUG/MINOR: acl: Fix memory leaks when an ACL expression is parsed
2019-09-13BUG/MINOR: filters: Properly set the HTTP status code on analysis error
2019-09-13BUG/MEDIUM: http: also reject messages where "chunked" is missing from transfer-enoding
2019-09-10BUG/MINOR: listener: Fix a possible null pointer dereference
2019-09-10BUG/MEDIUM: connection: don't keep more idle connections than ever needed
2019-09-10BUG/MINOR: lb/leastconn: ignore the server weights for empty servers
2019-09-04BUG/MEDIUM: cache: Don't cache objects if the size of headers is too big
2019-09-04BUG/MINOR: h1: Properly reset h1m when parsing is restarted
2019-09-04BUG/MINOR: http-ana: Reset response flags when 1xx messages are handled
2019-09-04BUG/MEDIUM: proto-http: Always start the parsing if there is no outgoing data
2019-08-26BUG/MEDIUM: url32 does not take the path part into account in the returned hash.
2019-08-26BUG/MEDIUM: listener/threads: fix an AB/BA locking issue in delete_listener()
2019-08-26BUG/MINOR: mworker: disable SIGPROF on re-exec
2019-08-26BUG/MEDIUM: mux-h1: do not truncate trailing 0CRLF on buffer boundary
2019-08-15BUG/MEDIUM: lua: Fix test on the direction to set the channel exp timeout
2019-08-12BUG/MINOR: lua: fix setting netfilter mark
2019-08-08BUG/MINOR: buffers/threads: always clear a buffer's head before releasing it
2019-08-08BUG/MINOR: ssl: fix 0-RTT for BoringSSL
2019-08-06BUG/MEDIUM: checks: make sure to close nicely when we're the last to speak
2019-08-06BUG/MINOR: mux-h2: always reset rcvd_s when switching to a new frame
2019-08-06BUG/MINOR: mux-h2: always send stream window update before connection's
2019-08-06BUG/MEDIUM: mux-h2: do not recheck a frame type after a state transition
2019-08-06BUG/MINOR: mux-h2: use CANCEL, not STREAM_CLOSED in h2c_frt_handle_data()
2019-08-06BUG/MINOR: mux-h2: don't refrain from sending an RST_STREAM after another one
2019-08-06BUG/MEDIUM: fd: Always reset the polled_mask bits in fd_dodelete().
2019-08-02BUG/MEDIUM: mux-h2: split the stream's and connection's window sizes
2019-08-02BUG/MEDIUM: mux-h2: unbreak receipt of large DATA frames
2019-08-01BUG/MINOR: stream-int: also update analysers timeouts on activity
2019-08-01BUG/MAJOR: http/sample: use a static buffer for raw -> htx conversion
2019-08-01BUG/MEDIUM: lb-chash: Ensure the tree integrity when server weight is increased
2019-07-30BUG/MINOR: lua: Set right direction and flags on new HTTP objects
2019-07-30BUG/MAJOR: queue/threads: avoid an AB/BA locking issue in process_srv_queue()
2019-07-29BUG/MINOR: hlua: Only execute functions of HTTP class if the txn is HTTP ready
2019-07-29BUG/MEDIUM: hlua: Check the calling direction in lua functions of the HTTP class
2019-07-29BUG/MINOR: hlua/htx: Reset channels analyzers when txn:done() is called
2019-07-29BUG/MINOR: log: make sure writev() is not interrupted on a file output
2019-07-29BUG/MEDIUM: streams: Don't switch the SI to SI_ST_DIS if we have data to send.
2019-07-26BUG/MEDIUM: lb-chash: Fix the realloc() when the number of nodes is increased
2019-07-26BUG/MINOR: proxy: always lock stop_proxy()
2019-07-26BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff

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