Hi,

HAProxy 2.5-dev5 was released on 2021/08/28. It added 65 new commits
after version 2.5-dev4.

The vacation period remains clearly visible in the flow of incoming
patches. Despite this, this version brings a few new features, among
which:

  - William merged the new native HTTP client: the purpose is to ease the
    addition of new features that rely on performing HTTP requests to
    external hosts. LetsEncrypt and xDS immediately come to mind, but we
    could imagine being able to push logs over HTTP in the future, or
    using DNS-over-HTTP for example. The Lua's HTTP client (which currently
    relies on raw TCP) is being updated to support the native client, which
    will allow it to support keep-alive, chunks or even HTTP/2.

  - Rémi arranged some SSL sample fetch functions to keep a reference to
    the SSL context so that it becomes to log some of the available
    connection-level information even in case of handshake error
    (previously the connection context would be released before the log
    was produced, thus missing some info).

  - Amaury extended the dynamic server deletion to any server that is not
    referenced by any rule. This seems to complete the dynamic server
    changes that allow to add/remove any arbitrary server without having
    to reload.

  - Marcin's JA3 patchset was finally merged. It provides new sample fetch
    functions that ease extraction of TLS records from a client hello,
    hash them and put them in a format compatible with the JA3 spec. This
    is convenient to perform TLS-based client fingerprinting, for example
    to detect spoofed user-agents or to restrict access only to known
    valid ones.

  - David improved FreeBSD support to match some of the Linux-specific
    features (set-dumpable, automatic executable path retrieval, etc).

  - the idle time report in "show info" was fixed; it used to report
    garbage on too low activity, and to report per-thread idle value
    instead of per-process. This will be backported to 2.4 and maybe
    further if required.

The rest is the usual lot of bug fixes. I'm still hoping to be able to
merge a few bits on the thread groups soon. I also had a look at the
mess around the variable names indexing, and figured that while it would
be difficult to replace this without the index of names (I mean without
spending all the CPU cycles in malloc/free), there are always reasonably
few variables names in each scope (I mean far less than 4 billion!) and
we could instead always store an xxh64() of the name, which will be
collision-free and will allow us to use pools. I'll have a look at this
soon, this might simplify the code, speed it up, and save memory at the
same time.

There are a few issues in the process of being fixed or tested, so I think
there will be a new set of stable releases in a week or two. Till then
this leaves some time to give 2.5-dev5 a try :-)

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.5/src/
   Git repository   : http://git.haproxy.org/git/haproxy.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy.git
   Changelog        : http://www.haproxy.org/download/2.5/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Amaury Denoyelle (10):
      MINOR: server: return the next srv instance on free_server
      BUG/MINOR: stats: use refcount to protect dynamic server on dump
      MEDIUM: server: extend refcount for all servers
      MINOR: server: define non purgeable server flag
      MINOR: server: mark referenced servers as non purgeable
      MINOR: server: mark servers referenced by LUA script as non purgeable
      MEDIUM: server: allow to remove servers at runtime except non purgeable
      REGTEST: add missing lua requirements on server removal test
      REGTEST: fix haproxy required version for server removal test
      BUG/MINOR: resolvers: mark servers with name-resolution as non purgeable

Dragan Dosen (2):
      BUG/MEDIUM: base64: check output boundaries within base64{dec,urldec}
      BUG/MINOR: base64: base64urldec() ignores padding in output size check

Ilya Shipitsin (2):
      CLEANUP: assorted typo fixes in the code and comments
      BUILD: adopt script/build-ssl.sh for OpenSSL-3.0.0beta2

Marcin Deranek (5):
      MEDIUM: ssl: Capture more info from Client Hello
      MINOR: sample: Expose SSL captures using new fetchers
      MINOR: sample: Add be2dec converter
      MINOR: sample: Add be2hex converter
      MEDIUM: config: Deprecate tune.ssl.capture-cipherlist-size

Remi Tricot-Le Breton (2):
      MEDIUM: ssl: Keep a reference to the client's certificate for use in logs
      BUILD/MINOR: ssl: Fix compilation with OpenSSL 1.0.2

Tim Duesterhus (2):
      REGTESTS: Use `feature cmd` for 2.5+ tests
      REGTESTS: Remove REQUIRE_VERSION=1.5 from all tests

William Lallemand (21):
      MINOR: httpclient: initialize the proxy
      MINOR: httpclient: implement a simple HTTP Client API
      MINOR: httpclient/cli: implement a simple client over the CLI
      MINOR: httpclient/cli: change the User-Agent to "HAProxy"
      MINOR: server: check if srv is NULL in free_server()
      MINOR: proxy: check if p is NULL in free_proxy()
      BUG/MINOR: httpclient: fix uninitialized sl variable
      BUG/MINOR: httpclient/cli: change the appctx test in the callbacks
      BUG/MINOR: httpclient: check if hdr_num is not 0
      MINOR: httpclient: cleanup the include files
      BUG/MINOR: systemd: ExecStartPre must use -Ws
      MINOR: systemd: remove the ExecStartPre line in the unit file
      MINOR: ssl: add an openssl version string parser
      MINOR: cfgcond: implements openssl_version_atleast and 
openssl_version_before
      CLEANUP: ssl: remove useless check on p in openssl_version_parser()
      BUG/MINOR: httpclient: remove deinit of the httpclient
      MINOR: httpclient: set verify none on the https server
      MINOR: httpclient: add the server to the proxy
      BUG/MINOR: httpclient: fix Host header
      BUILD: httpclient: fix build without OpenSSL
      BUG/MINOR: proxy: don't dump servers of internal proxies

Willy Tarreau (19):
      BUG/MEDIUM: h2: match absolute-path not path-absolute for :path
      BUG/MEDIUM: cfgparse: do not allocate IDs to automatic internal proxies
      BUG/MINOR: http_client: make sure to preset the proxy's default settings
      REGTESTS: http_upgrade: fix incorrect expectation on TCP->H1->H2
      REGTESTS: abortonclose: after retries, 503 is expected, not close
      REGTESTS: server: fix agent-check syntax and expectation
      MINOR: hlua: take the global Lua lock inside a global function
      BUG/MINOR: stick-table: fix the sc-set-gpt* parser when using expressions
      CI: github-actions: remove obsolete options
      MINOR: compiler: implement an ONLY_ONCE() macro
      BUG/MINOR: lua: use strlcpy2() not strncpy() to copy sample keywords
      BUG/MINOR: time: fix idle time computation for long sleeps
      MINOR: time: add report_idle() to report process-wide idle time
      BUG/MINOR: ebtree: remove dependency on incorrect macro for bits per long
      BUILD: activity: use #ifdef not #if on USE_MEMORY_PROFILING
      BUILD/MINOR: defaults: eliminate warning on MAXHOSTNAMELEN with -Wundef
      BUILD/MINOR: ssl: avoid a build warning on LIBRESSL_VERSION with -Wundef
      IMPORT: slz: silence a build warning with -Wundef
      BUILD/MINOR: regex: avoid a build warning on USE_PCRE2 with -Wundef

[email protected] (2):
      MINOR: tools: add FreeBSD support to get_exec_path()
      MINOR: proc: setting the process to produce a core dump on FreeBSD.

---

Reply via email to