Hi,

HAProxy 3.0-dev13 was released on 2024/05/24. It added 66 new commits
after version 3.0-dev12.

Well, first, I really want to thank all those who've been trying 3.0-dev
recently, this has been useful to nail down various issues, some quite
recent and other ones much older, and it's way more efficient to work on
bugs before a release than after, so keep up the great work! I hope this
will encourage them to continue.

Among the latest changes this week, I'm seeing some stability fixes and
small updates here and there:
  - an issue where QUIC on LibreSSL could crash when using cipher
    TLS_AES_128_CCM_SHA256 that is normally not used ;

  - a workaround for an issue in LibreSSL with default algo CHACHA20_POLY1305
    (that is used by default when running on machines without AES-NI, i.e.
    non-x86 these days), which would cause requests to hang because the
    data cannot be deciphered. The work around here consists in cleanly
    rejecting such connections for now on current version so that the
    client instantly retries using TCP. LibreSSL 4.0 will have the fix,
    and if it gets backported, we'll relax the test to include that fixed
    version as well. A config-based workaround consists in forcing the
    ciphers to exclude this one.

  - a possible leak of backend sockets when their FD number was a small
    multiple of 4096 due to the wrong variable being checked for an error
    code (since dev10 only).

  - rhttp's preconnect wouldn't work in single-thread due to an offset +1
    on the owner thread ID when issuing connection requests. A few other
    fixes concern rhttp (listener not suspending, session origin after
    reversal).

  - server port lost on DNS resolution timeout, causing health check errors.

  - a few remaining races in stick-tables & peers (present since 2.9), super
    hard to reproduce... until you manage to see them in seconds and they
    cause crashes. They directly depend on the request rate and their increase
    in 3.0-dev is related to the lower threading overhead that increases
    performance and the probability to meet them. There are probably 2-3
    deployments in the world able to trigger them, it's fortunate that they
    test -dev ;-)

  - the proxy protocol now also parses TLV for LOCAL mode and supports
    sending them without a stream so that elements can be passed during
    preconnect to a next stage that will no longer ignore them.

  - made sure that %[path] is never empty when sending an absolute request
    lacking the trailing /.

  - two new global settings now make it possible to simply prevent HAProxy
    from accepting traffic from privileged ports; one setting is for TCP
    and the other one for QUIC. QUIC was configured by default to refuse
    such traffic, because by relying on UDP it's particularly exposed to
    DNS and NTP amplification attacks, and while it's more efficient to
    filter such ports upstream, it's still very simple and cheap to just
    drop such undesirable packets before processing them.

  - David Carlier's VMA naming feature was generalized to various other
    areas so that on Linux when checking where HAProxy allocates memory
    in /proc/$pid/maps, some of these areas will appear and give hints
    about what causes this.

  - the name associated with servers in connection pools can now be
    overridden by the expression in pool-conn-name when SNI is not
    desired (useful with rhttp without SSL for example, but may also
    make sense when reaching remote servers over SSL tunnels).

  - the crt-store settings now properly make sure to avoid FS-based
    auto-discovery when some file components are explicitly named.

  - finally the thread-hard-limit global parameter was added. It allows
    to only set a hard limit on the number of threads without enforcing
    that value as the thread count (like nbthread does). That's convenient
    to prepare portable configs with no more than X threads when one knows
    it's only a waste of resources to use more.

  - build warnings on various configurations were resolved

  - updates to the build-ssl script to make it usable even outside of
    the CI (helps for quickly testing a specific implementation).

  - various doc cleanups

That still looks like a lot but these are all just tiny tasks that were
waiting for some more relaxed time to work on (aside the bugs of course).

At this point it's been tested to run fine on various flavours of Linux
on x86/arm64/mips32, FreeBSD amd64, OpenBSD mips64, Solaris sparc64. The
testing of the various last important fixes has been good so far, this
version essentially integrates everything together and I'd like it to be
the one we release on Wednesday (more or less doc updates then).

Given that remaining bugs are fixed and the small stuff done as well, I'd
like that we only focus on the doc and testing during the next days and
that the code is only changed if a significant regression is found (i.e.
we avoid last-minute breakage). Also, I know well enough that it's
sufficient to say that a version is the last -dev for about everyone to
skip it and wait for the final one! That's one more reason for not waiting
too long after it and not modifying it too much.

Please find the usual URLs below :
   Site index       : https://www.haproxy.org/
   Documentation    : https://docs.haproxy.org/
   Wiki             : https://github.com/haproxy/wiki/wiki
   Discourse        : https://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Issue tracker    : https://github.com/haproxy/haproxy/issues
   Sources          : https://www.haproxy.org/download/3.0/src/
   Git repository   : https://git.haproxy.org/git/haproxy.git/
   Git Web browsing : https://git.haproxy.org/?p=haproxy.git
   Changelog        : https://www.haproxy.org/download/3.0/src/CHANGELOG
   Dataplane API    : 
https://github.com/haproxytech/dataplaneapi/releases/latest
   Pending bugs     : https://www.haproxy.org/l/pending-bugs
   Reviewed bugs    : https://www.haproxy.org/l/reviewed-bugs
   Code reports     : https://www.haproxy.org/l/code-reports
   Latest builds    : https://www.haproxy.org/l/dev-packages

Willy
---
Complete changelog :
Amaury Denoyelle (20):
      BUG/MINOR: connection: parse PROXY TLV for LOCAL mode
      BUG/MINOR: server: free PROXY v2 TLVs on srv drop
      MINOR: rhttp: add log on connection allocation failure
      BUG/MEDIUM: rhttp: fix preconnect on single-thread
      BUG/MINOR: rhttp: prevent listener suspend
      BUG/MINOR: rhttp: fix task_wakeup state
      MINOR: session: define flag to explicitely release listener on free
      MEDIUM: rhttp: create session for active preconnect
      MINOR: rhttp: support PROXY emission on preconnect
      MINOR: connection: support PROXY v2 TLV emission without stream
      BUILD: trace: fix warning on null dereference
      MEDIUM: config: prevent communication with privileged ports
      MAJOR: config: prevent QUIC with clients privileged port by default
      BUG/MINOR: quic: adjust restriction for stateless reset emission
      MINOR: quic: clarify doc for quic_recv()
      MINOR: server: generalize sni expr parsing
      MINOR: server: define pool-conn-name keyword
      MEDIUM: connection: use pool-conn-name instead of sni on reuse
      BUG/MINOR: rhttp: initialize session origin after preconnect reversal
      DOC: quic: specify that connection migration is not supported

Aurelien DARRAGON (11):
      BUG/MINOR: ring: free ring's allocated area not ring's usable area when 
using maps
      DEBUG: tools: add vma_set_name() helper
      DEBUG: shctx: name shared memory using vma_set_name()
      DEBUG: sink: add name hint for memory area used by memory-backed sinks
      DEBUG: pollers: add name hint for large memory areas used by pollers
      DEBUG: errors: add name hint for startup-logs memory area
      DEBUG: fd: add name hint for large memory areas
      CLEANUP: tools: fix vma_set_name() function comment
      DEBUG: tools: add vma_set_name_id() helper
      DEBUG: pollers/fd: add thread id suffix to per-thread memory areas name 
hints
      BUG/MEDIUM: server/dns: preserve server's port upon resolution timeout or 
error

Christopher Faulet (8):
      BUG/MINOR: http-ana: Don't crush stream termination condition on internal 
error
      MAJOR: spoe: Let the SPOE back into the game
      BUG/MEDIUM: mux-quic: Create sedesc in same time of the QUIC stream
      MINOR: mux-quic: Set abort info for SC-less QCS on STOP_SENDING frame
      BUG/MEDIUM: stick-tables: Fix race with peers when trashing oldest entries
      BUG/MEDIUM: stick-tables: Fix race with peers when killing a sticky 
session
      BUG/MINOR: http-htx: Support default path during scheme based 
normalization
      BUG/MINOR: server: Don't reset resolver options on a new default-server 
line

Frederic Lecaille (1):
      BUG/MAJOR: quic: Crash with TLS_AES_128_CCM_SHA256 (libressl only)

Ilia Shipitsin (1):
      CI: scripts/build-ssl.sh: loudly fail on unsupported platforms

Valentine Krasnobaeva (4):
      BUG/MEDIUM: proto: fix fd leak in <proto>_connect_server
      MINOR: sock: set conn->err_code in case of EPERM
      BUG/MINOR: sock: fix sock_create_server_socket
      MINOR: proto: fix coding style

William Lallemand (9):
      CLEANUP: ssl/cli: remove unused code in dump_crtlist_conf
      MINOR: ssl: check parameter in ckch_conf_cmp()
      DOC: configuration: rework the crt-store load documentation
      MEDIUM: ssl: don't load file by discovering them in crt-store
      DOC: configuration: update the crt-list documentation
      DOC: configuration: add the supported crt-store options in crt-list
      REGTESTS: scripts: allow to change the vtest timeout
      CI: scripts/build-ssl: add a DESTDIR and TMPDIR variable
      CI: scripts/buil-ssl: cleanup the boringssl and quictls build

Willy Tarreau (12):
      MINOR: traces: enumerate the list of levels/verbosities when not found
      BUG/MEDIUM: quic_tls: prevent LibreSSL < 4.0 from negotiating 
CHACHA20_POLY1305
      MINOR: config: add thread-hard-limit to set an upper bound to nbthread
      BUILD: quic: fix unused variable warning when threads are disabled
      BUG/MEDIUM: stick-tables: make sure never to create two same remote 
entries
      CLEANUP: stick-tables: remove a few unneeded tests for use_wrlock
      MINOR: stick-tables: remove the uneeded read lock in stksess_free()
      DOC: config: fix aes_gcm_enc() description text
      DOC: config: fix incorrect section reference about custom log format
      DOC: config: uniformize the naming and description of custom log format 
args
      DOC: config: clarify the fact that custom log format is not just for 
logging
      REGTESTS: acl_cli_spaces: avoid a warning caused by undefined logs

---

Reply via email to