Hi,

HAProxy 3.0-dev10 was released on 2024/05/04. It added 47 new commits
after version 3.0-dev9.

This week was short, with days off explaining the reduced number of commits,
but there are still interesting ones that made it worth producing another
release.

Last week's log updates caused a few small regressions in the log format
production (e.g. when dealing with empty fields surrounded by spaces), and
these are now fixed here. That just reminds us that the expectations between
logs and other uses of log formats is probably starting to diverge quite a
bit, between logs, headers, health checks, http-return, error files etc,
and that probably at some point we should start to think about specifying
variations depending on the use case, or maybe even think about performing
some unifying changes that could cause tiny differences that might require
some to slightly adjust their log formats. The offender here is the %hr log
format which can be empty and cause the following space to be dropped, or
non-empty and respect the space. That doesn't fit well with the principle
of concatenating fields as they are, e.g. when building a header, check or
body. That's just some food for later anyway. Oh, and speaking about logs,
the tiny performance drop I spoke about last week was now recovered.

Another point is that historically, "bind" and "server" lines would silently
ignore the "namespace" argument for UNIX sockets, just because code paths
were different, UNIX sockets had their own socket() call, and when namespaces
were introduced, UNIX sockets simply did not support them. But this changed
long ago and it could be surprising for someone genuinely configuring that
to see the namespace being ignored. Now the code paths were refactored so
that the same code is used to create all sockets and UNIX sockets can now
naturally make use of namespaces when configured. Another point regarding
namespaces is that it's one of the cases where capabilitiy cap_sys_admin is
required but it wasn't reported then. Now this is properly checked for, it
is reported if missing, and a new "cap_sys_admin" capability was added to
enable them without running as root. Finally, when the capability is missing,
instead of saying "failed to create socket", the error will explicitly state
the permission issue when facing EPERM; this should help users spot where the
problem is.

The HTTP client now has an option to use either origin or absolute URIs.
This should make it easier to configure to talk to old servers which are
not spec-compliant and do not support absolute URIs. This is being used
now by the ocsp_update agent via a new setting "ocsp-update.httpproxy".

Concerning the reloadable stats counters, the support for the rate counters
and the age types were added. For example a server's last state change should
now be transferred correctly.

The rest is some cleanups, spelling fixes in doc and code, CI updates
(test on NetBSD 10), and a few more reg tests (including one for the
recently fixed Vary header processing).

Last week I mentioned my intent to try to fix the buffer_wait infrastructure
that deals with low-memory condition. I thought I had something really about
to work until I noticed a bug which, once fixed, got me back to the original
situation. Maybe it's just a matter of re-studying the situation and it could
now be quick, or it's more subtle. So in any case for now I'm not merging
anything until I understand the root cause of all this. I haven't completely
lost hope yet ;-)  It's just that it takes time away from a lot of other
things...

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 (14):
      BUG/MINOR: stats: replace objt_* by __objt_* macros
      MINOR: stats: fix visual alignment for stat_cols_px definition
      MINOR: stats: convert req_tot as generic column
      MINOR: stats: prepare stats-file support for values other than FN_COUNTER
      MINOR: counters: move freq-ctr from proxy/server into counters struct
      MINOR: stats: support rate in stats-file
      MINOR: stats: convert rate as generic column for proxy stats
      MINOR: counters: move last_change into counters struct
      MINOR: stats: support age in stats-file
      MINOR: stats: convert age as generic column for proxy stat
      REORG: stats: define stats-proxy source module
      MINOR: stats: extract proxy clear-counter in a dedicated function
      REGTESTS: stats: add test stats-file counters preload
      REGTESTS: replace REQUIRE_VERSION by version_atleast

Aurelien DARRAGON (15):
      CLEANUP: tools/cbor: rename cbor_encode_ctx struct members
      MINOR: log/cbor: _lf_cbor_encode_byte() explicitly requires non-NULL ctx
      BUG/MINOR: log: fix global lf_expr node options behavior
      CLEANUP: log: add a macro to know if a lf_node is configurable
      BUG/MINOR: log/encode: consider global options for key encoding
      BUG/MINOR: log/encode: fix potential NULL-dereference in LOGCHAR()
      BUG/MINOR: log: fix global lf_expr node options behavior (2nd try)
      MINOR: log/cbor: _lf_cbor_encode_byte() explicitly requires non-NULL ctx 
(again)
      BUG/MEDIUM: log: don't ignore disabled node's options
      MEDIUM: log: optimizing tmp->type handling in sess_build_logline()
      BUG/MINOR: log: prevent double spaces emission in sess_build_logline()
      OPTIM: log: declare empty buffer as global variable
      OPTIM: log: use thread local lf_buildctx to stop pushing it on the stack
      OPTIM: log: use lf_buildctx's buffer instead of temporary stack buffers
      OPTIM: log: speedup date printing in sess_build_logline() when no 
encoding is used

Ilia Shipitsin (2):
      CI: netbsd: adjust packages after NetBSD-10 released
      CLEANUP: assorted typo fixes in the code and comments

Remi Tricot-Le Breton (2):
      BUG/MEDIUM: cache: Vary not working properly on anything other than 
accept-encoding
      REGTESTS: cache: Add test on 'vary' other than accept-encoding

Valentine Krasnobaeva (7):
      MINOR: sock: rename sock to sock_fd in sock_create_server_socket
      MEDIUM: proto_uxst: take in account server namespace
      MEIDUM: unix sock: use my_socketat to create bind socket
      MINOR: sock_set_mark: take sock family in account
      MEDIUM: proto: make common fd checks in sock_create_server_socket
      MINOR: sock: add EPERM case in sock_handle_system_err
      MINOR: capabilities: add cap_sys_admin support

William Lallemand (6):
      MINOR: httpclient: allow to use absolute URI with new flag HC_F_HTTPROXY
      MINOR: ssl: introduce ocsp_update.http_proxy for ocsp-update keyword
      CLEANUP: ssl: clean the includes in ssl_ocsp.c
      CLEANUP: ssl: move the global ocsp-update options parsing to ssl_ocsp.c
      CLEANUP: ssl: rename new_ckch_store_load_files_path() to 
ckch_store_new_load_files_path()
      MINOR: ssl: rename ocsp_update.http_proxy into ocsp-update.httpproxy

Willy Tarreau (1):
      BUG/MINOR: stconn: don't wake up an applet waiting on buffer allocation

---

Reply via email to