Hi,
HAProxy 2.0.27 was released on 2022/01/26. It added 49 new commits
after version 2.0.26.
This addresses a small regression in 2.0.26 in legacy mode on the
authorization header field parser, and a bunch of other fixes:
- possible crash on master CLI when trying to enter an old pid when
in prompt mode
- there was a risk of frozen stream or spinning loop when combining
layer-7 retries with some filters because an analyser responsible
for releasing the filter was dropped. This was fixed.
- on reload we used to transfer listening sockets by packs of 253 between
the old and the new process but it looks like for whatever reason on
musl 253 doesn't work and the limit is 252. It might be caused by a
slightly different layout for the message. So the limit was lowered by
one as this will definitely not affect reload time!
- a previous fix for a risk of crash on shutdown in the resolvers code
was reverted as it used to cause an endless loop on this version.
- Daniel Jakots fixed the build with libreSSL 3.5 and newer (some macros
didn't work anymore).
- the build warning with clang on i386 was addressed, as well as with
clang on Solaris.
- the problem where the SNI could be set again on a reused server
connection was fixed
- fixed some usual "maybe unused" warnings on old compilers for
unusual platform (gcc-4.7 on MIPS with threads disabled).
- William fixed a bug in the master-worker when the master is executed in
wait mode (only after a reload failure in 2.4 and older). In this case,
the master must never try to to get the listeners FD from the previous
process using _getsocks on the stats socket. Otherwise, if a reload
fails, the master exists with a EXIT_FAILURE status, killing all the
workers.
- some processing issues on the CLI that could arise with pipelining
clients were fixed.
- the CLI's "show version" was backported to help with diagnostics and
to uniformize APIs between versions.
- various minor doc updates and typo fixes
- some regtest and CI backports to ease stable maintainers' job
In addition, I'm taking this opportunity to mention that we're currently
facing a small bunch of very strange and non-reproducible bugs (which is
why we've been postponing this release, to make sure it was not affected
by a possible regression). Among the current issues under investigation,
the following ones immediately come to my mind:
- a rare crash in the libc's allocator when called from openssl's
SSL_Free() function in some 2.4 and/or 2.5 versions, which very likely
indicates a use-after-free. It was reported by Christian in issue
#1494 a month ago and we're still digging. Since then we got one,
maybe two other reports. Some tooling was developped to try to nail
it down, so if some of you would like to check for the presence of
recent segfaults in their system logs and share info here or in that
issue, you're welcome.
- in issue #1522, it appears that some connections may not always be
closed in pure TCP mode between haproxy and the servers. It was
confirmed that the behavior changed between 2.2 and 2.4 but for now
we don't even know if it's a side effect of some more important change
(that needs to be better documented or that requires different default
settings) or a connection leak bug.
- strange blocking of the master CLI between 2.5-dev2 and 2.5.0 in issue
#1512. This helped figure (and fix) some related bugs but not this one
yet. Similar experience welcome here as well.
- something looking like an FD leak during reloads and maybe startup as
well, reported in private, between 2.5.0 and 2.5.1, to the point that
some listeners fail to rebind after a few reloads. No clue yet either.
Given that these issues take a lot of time to reproduce in field, look a
bit random, and are never observed in other environments, they consume a
huge amount of time to analyse and to try to emit hypothesis and patches
to dig further. For this reason if you've observed similar trouble, don't
be shy and please share your info so that we can get back to doing more
useful stuff ASAP. Thanks!
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.0/src/
Git repository : http://git.haproxy.org/git/haproxy-2.0.git/
Git Web browsing : http://git.haproxy.org/?p=haproxy-2.0.git
Changelog : http://www.haproxy.org/download/2.0/src/CHANGELOG
Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/
Willy
---
Complete changelog :
Amaury Denoyelle (2):
BUG/MINOR: backend: do not set sni on connection reuse
BUG/MINOR: backend: restore the SF_SRV_REUSED flag original purpose
Christopher Faulet (6):
BUG/MEDIUM: cli: Properly set stream analyzers to process one command at
a time
DOC: spoe: Clarify use of the event directive in spoe-message section
DOC: config: Specify %Ta is only available in HTTP mode
BUG/MEDIUM: http-ana: Preserve response's FLT_END analyser on L7 retry
BUG/MEDIUM: cli: Never wait for more data on client shutdown
BUG/MEDIUM: htx: Adjust length to add DATA block in an empty HTX buffer
Daniel Jakots (1):
BUILD: ssl: unbreak the build with newer libressl
David Carlier (1):
BUILD/MINOR: fix solaris build with clang.
Ilya Shipitsin (12):
CI: Github Actions: enable prometheus exporter
CI: Github Actions: remove LibreSSL-3.0.2 builds
CI: Github Actions: enable BoringSSL builds
CI: Github Action: run "apt-get update" before packages restore
CI: github actions: update LibreSSL to 3.3.0
CI: github actions: enable 51degrees feature
CI: GitHub Actions: enable daily Coverity scan
CI: github actions: build several popular "contrib" tools
CI: github actions: switch to stable LibreSSL release
CI: github actions: update LibreSSL to 3.2.5
CI: Github Actions: switch to LibreSSL-3.3.3
BUILD: scripts/build-ssl.sh: use "uname" instead of ${TRAVIS_OS_NAME}
Thierry Fournier (1):
DOC: fix misspelled keyword "resolve_retries" in resolvers
Tim Duesterhus (12):
CI: Expand use of GitHub Actions for CI
CI: Stop hijacking the hosts file
CI: Pass the github.event_name to matrix.py
CI: Clean up Windows CI
CI: Pin VTest to a known good commit
CI: Fix DEBUG_STRICT definition for Coverity
CI: Fix the coverity builds
Revert "CI: Pin VTest to a known good commit"
CLEANUP: peers: Remove unused static function `free_dcache`
CLEANUP: peers: Remove unused static function `free_dcache_tx`
CLEANUP: ssl: Remove useless loop in tlskeys_list_get_next()
CLEANUP: ssl: Remove useless local variable in tlskeys_list_get_next()
William Lallemand (4):
MINOR: cli: "show version" displays the current process version
BUG/MEDIUM: mworker/cli: crash when trying to access an old PID in prompt
mode
BUG/MINOR: cli: fix _getsocks with musl libc
BUG/MEDIUM: mworker: don't use _getsocks in wait mode
Willy Tarreau (10):
CI: Github Actions: temporarily disable BoringSSL builds
BUILD: makefile: add entries to build common debugging tools
REGTESTS: mark the abns test as broken again
BUILD: general: always pass unsigned chars to is* functions
MINOR: ssl: make tlskeys_list_get_next() take a list element
Revert "BUG/MEDIUM: resolvers: always check a valid item in query_list"
BUG/MINOR: http: fix recent regression on authorization in legacy mode
BUILD: cli: clear a maybe-unused warning on some older compilers
BUILD: makefile: add -Wno-atomic-alignment to work around clang abusive
warning
CLEANUP: ssl: make ssl_sock_free_srv_ctx() zero the pointers after free
---