Hi,
HAProxy 2.2.6 was released on 2020/11/30. It added 49 new commits after
version 2.2.5.
Two major bugs were fixed in this versions, both leading to a memory
corruption and random crashes. The first one was in the SPOE. Some released
spoe applets could still be referenced in the offload streams. There are
many ways to trigger this bug. The easiest is probably during reloads. The
second one was in the checks. The buffers used for I/O were still allocated
by hand during the startup with a specific size (not necessarily the same
than other buffers). But since the recent refactoring of the checks to rely
exclusively on the tcp-checks and to use the underlying mux layer, this part
was totally buggy. Indeed, because these buffers are now passed to a mux,
they may be swapped if a zero-copy is possible. In fact, for now it is
only possible in h2_rcv_buf(). Thus, the bug concretely only existed if a h2
health-check was performed. But, it was a latent bug for other muxes. Now,
these buffers are allocated using the buffer pool. As a side effect, the
"tune.chksize" global option is now deprecated.
Another major bug fixed is a possible overflow in the offset variable when
using the filters. It was in fact an hidden bug, only revealed by another
commit of this release. So, not so major in reality. The commit in question
is a fix on filters to forward all filtered data at the end of http
filtering. When http filtering ends, if there are some filtered data not
forwarded yet, we now forward them in flt_http_end(). It is required for
tunnel established using a CONNECT.
The last major bug fixed is an inter-release bug, in a Willy's attempt to
fix a decoding problem in the peers implementation which was leading to
protocol errors. Frédéric also fixed two other bugs on peers and added some
traces so that exchanges can now be observed. Everything should be fixed on
this part now.
Amaury fixed a problem in the checks which could lead to a segfault when a
pure tcp-check was performed on an HTTP server. Now, extra tests are
performed during startup to select the right mode and an error is triggered
if an incompatibility is detected.
A bug in the http-after-response ruleset was fixed. It is unexpected to
evaluate these rules on an empty response. This may happen when an empty
errorfile is returned. This case is now properly handled.
Maciej fixed the sample fetches to retrieve messages cookies when called
without cookie name. This case was never properly handled, contrary to what
the doc says. He also implemented the "-m" argument to the "del-header"
action to match on a full header name, a substring, a prefix, a suffix, or
even a regex.
Thierry fixed a bug in string pattern matching. Constant sample fetches must
be duplicated first to not overwrite it when the trailing 0 is added.
William Lallemand fixed a SSL bug, a segfault on startup when a certificate
using the X509v3 AKID extension without the keyid field was loaded. And
ssl_{c,s}_chain_der fetch methods, added by William Dauchy, was backported.
On the build part, Tim added the DEBUG flags in haproxy -vv output. He also
added them in .build_opts file, forcing recompilation if the flags change.
The configuration manual was improved. Among other, Willy added a better
description of the configuration file format and the escaping/quoting rules.
The other fixes and patches are listed in the complete changelog below. It
is highly recommended to update to this version.
Please find the usual URLs below :
Site index : http://www.haproxy.org/
Discourse : http://discourse.haproxy.org/
Slack channel : https://slack.haproxy.org/
Issue tracker : https://github.com/haproxy/haproxy/issues
Wiki : https://github.com/haproxy/wiki/wiki
Sources : http://www.haproxy.org/download/2.2/src/
Git repository : http://git.haproxy.org/git/haproxy-2.2.git/
Git Web browsing : http://git.haproxy.org/?p=haproxy-2.2.git
Changelog : http://www.haproxy.org/download/2.2/src/CHANGELOG
Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/
---
Complete changelog :
Amaury Denoyelle (3):
BUG/MEDIUM: check: reuse srv proto only if using same mode
MINOR: check: report error on incompatible proto
MINOR: check: report error on incompatible connect proto
Christopher Faulet (20):
MINOR: http-htx: Add understandable errors for the errorfiles parsing
BUG/MINOR: http-htx: Just warn if payload of an errorfile doesn't match
the C-L
DOC: config: Fix a typo on ssl_c_chain_der
BUG/MINOR: http-fetch: Fix calls w/o parentheses of the cookie sample
fetches
BUG/MINOR: http-htx: Handle warnings when parsing http-error and
http-errors
BUG/MAJOR: spoe: Be sure to remove all references on a released spoe
applet
MINOR: spoe: Don't close connection in sync mode on processing timeout
BUG/MINOR: tcpcheck: Don't warn on unused rules if check option is after
MINOR: init: Fix the prototype for per-thread free callbacks
MINOR: config/mux-h2: Return ERR_ flags from init_h2() instead of a status
REGTEST: make ssl_client_samples and ssl_server_samples require to 2.2
BUG/MEDIUM: filters: Forward all filtered data at the end of http
filtering
BUG/MINOR: http-ana: Don't wait for the body of CONNECT requests
BUG/MEDIUM: http-ana: Don't eval http-after-response ruleset on empty
messages
BUG/MAJOR: filters: Always keep all offsets up to date during data
filtering
BUG/MINOR: tcpcheck: Don't forget to reset tcp-check flags on new kind of
check
MINOR: tcpcheck: Don't handle anymore in-progress send rules in
tcpcheck_main
BUG/MAJOR: tcpcheck: Allocate input and output buffers from the buffer
pool
DOC: config: Move req.hdrs and req.hdrs_bin in L7 samples fetches section
BUG/MINOR: http-fetch: Fix smp_fetch_body() when called from a
health-check
Eric Salama (1):
MINOR: cfgparse: tighten the scope of newnameserver variable, free it on
error.
Frédéric Lécaille (3):
BUG/MINOR: peers: Do not ignore a protocol error for dictionary entries.
BUG/MINOR: peers: Missing TX cache entries reset.
MINOR: peers: Add traces to peer_treat_updatemsg().
Joao Morais (2):
DOC: clarify how to create a fallback crt
DOC: better describes how to configure a fallback crt
Maciej Zdeb (5):
BUG/MINOR: http-fetch: Extract cookie value even when no cookie name
BUG/MINOR: http_htx: Fix searching headers by substring
MINOR: http_act: Add -m flag for del-header name matching method
BUG/MEDIUM: http_act: Restore init of log-format list
DOC: Clarify %HP description in log-format
Thierry Fournier (2):
BUG/MINOR: pattern: a sample marked as const could be written
BUG/MINOR: lua: set buffer size during map lookups
Tim Duesterhus (3):
REGTESTS: Add sample_fetches/cook.vtc
BUILD: Make DEBUG part of .build_opts
BUILD: Show the value of DEBUG= in haproxy -vv
William Dauchy (2):
MINOR: ssl: add ssl_{c,s}_chain_der fetch methods
REGTESTS: converter: add url_dec test
William Lallemand (2):
BUG/MINOR: ssl: double free w/ smp_fetch_ssl_x_chain_der()
BUG/MINOR: ssl: segv on startup when AKID but no keyid
Willy Tarreau (5):
BUG/MINOR: ssl: don't report 1024 bits DH param load error when it's
higher
BUG/MEDIUM: peers: fix decoding of multi-byte length in stick-table
messages
BUILD: http-htx: fix build warning regarding long type in printf
BUG/MAJOR: peers: fix partial message decoding
DOC: better document the config file format and escaping/quoting rules
Your Name (1):
MINOR: plock: use an ARMv8 instruction barrier for the pause instruction
--
Christopher Faulet