Hi,

HAProxy 2.8-dev1 was released on 2023/01/07. It added 206 new commits
after version 2.8-dev0.

It's been a bit more than a month since 2.7.0 was released, time flies so
let's issue dev1 now to help keep everyone in sync. Here's a quick overview
of the currently merged changes:

- Some issues were addressed, essentially the same as those which resulted
  in 2.7.1 being issued, so I won't rehash them.

- The build system was cleaned up a little bit so that for every USE_xxx
  option there are now a pair of equivalent xxx_CFLAGS and xxx_LDFLAGS that
  can be passed to force a library name, path, extra dependency or
  anything.  This could help packagers dealing with less common distros,
  compilers or archs.

- The 51 Degrees code was updated to support their v4 API, apparently with
  a new hash algorithm.

- various CI updates, mainly to speed up SSL builds and avoid triggering
  errors when downloading third party projects to be built.

- small improvements to the pools debugging: now all debug options
  (including the mighty UAF) can be enabled or disabled at boot time using
  -dM, so there's no more need for different builds for tests/debugging.

- preliminary merge of the new event handler "event_hdl". This will be used
  to register and notify tasks about various internal events such as
  servers going up/down. For now only the basic infrastructure is there.
  One goal is to make use of this to rewrite the aging mailers stuff (which
  currently relies on modified health checks and cannot be customized), and
  very likely write it in Lua so that it's trivially extensible / hackable
  by anyone to suit various needs.

- the HTTP client logs have been slightly simplified to avoid producing
  redundant proxy names. Instead of "<HTTPCLIENT> <HTTPCLIENT>/<HTTPCLIENT>"
  one will now see "<HTTPCLIENT> -/-".

- some QUIC updates (STOP_SENDING emission, RESET_STREAM handling, shutw,
  default activation of the per-connection FD which will very soon allow
  to continue using QUIC sockets over reloads).

- support for dynamic SSL OCSP updates via the new CLI keyword
  "update ssl ocsp-response", and "update" keyword on crt-list lines.
  When set, HAProxy will use the http client to automatically fetch OCSP
  updates for configured certificates.

- the number of stick counters (used by track-sc rules) was previously set
  at buildtime by MAX_SESS_STK_CTR, defaulting to 3. Some users regularly
  ask to extend it, but increasing the value has an impact on memory and
  CPU usage. Instead of punishing everyone, we now have a new global
  setting "tune.stick-counters" which allows to change this number. It can
  even be zero, to completely disable the feature if not used.

- some users also wanted to support incrementing the GPC counters by more
  than one, and some even by an arbitrary value retrieved from elsewhere
  (e.g. a calculation, or a score retrieved from a server's header). Given
  that doing so using as many rules as needed made configs absolutely
  horrible, a new action was added for this, "sc-add-gpc", which takes an
  expression that is evaluated to provide the increment value.

- some new environment variables are set during the config parsing,
  HAPROXY_TCP_LOG_FMT, HAPROXY_HTTP_LOG_FMT and HAPROXY_HTTPS_LOG_FMT.
  They contain the complete format string for the default tcp/http/https
  log formats. This should ease appending new fields to the logs without
  having to copy-paste the current format from the config manual.

- minor debugging improvements: pool filtering in "debug dev memstats"
  and "show pools", balance of alloc/free in memstats output

- improved memory pools performance by using opportunistic versions of
  swrate_add() that are used to estimate the amount of entries needed
  to be kept in cache, with significantly reduced thread contention,
  and a better alignment of fields in the structure that simply doubled
  the QUIC performance on machines with many cores. Finally, in order to
  accommodate variations of L2 cache sizes in CPUs, the thread-local pool
  cache size can now be set in the global section.

- more actions were added to the "http-after-response" (set-map,
  set-log-level, sc-inc-gpc etc)

- a new "param" converter was added, allowing to extract query string
  parameters while properly respecting delimiters (instead of recognizing
  several chars as a delimiter it cleanly uses "&" between them and "="
  for names, and the '&' can be changed.

There are a small number of other minor stuff I don't exactly remember.
It's already running on haproxy.org. For now it's basically as stable
as 2.7, as nothing really sensitive was modified, so do not hesitate to
give it a try if you don't know what to spend your time on next week :-)

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/2.8/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/2.8/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 (39):
      MINOR: quic: remove qc from quic_rx_packet
      MINOR: quic: complete traces in qc_rx_pkt_handle()
      MINOR: quic: extract datagram parsing code
      MINOR: tools: add port for ipcmp as optional criteria
      MINOR: quic: detect connection migration
      MINOR: quic: ignore address migration during handshake
      MINOR: quic: startup detect for quic-conn owned socket support
      MINOR: quic: test IP_PKTINFO support for quic-conn owned socket
      MINOR: quic: define config option for socket per conn
      MINOR: quic: allocate a socket per quic-conn
      MINOR: quic: use connection socket for emission
      MEDIUM: quic: use quic-conn socket for reception
      MEDIUM: quic: move receive out of FD handler to quic-conn io-cb
      MINOR: mux-quic: rename duplicate function names
      MEDIUM: quic: requeue datagrams received on wrong socket
      MINOR: quic: reconnect quic-conn socket on address migration
      MINOR: quic: activate socket per conn by default
      BUG/MINOR: quic: fix fd leak on startup check quic-conn owned socket
      BUG/MINOR: quic: properly handle alloc failure in qc_new_conn()
      BUG/MINOR: quic: handle alloc failure on qc_new_conn() for owned socket
      CLEANUP: mux-quic: remove unused attribute on qcs_is_close_remote()
      BUG/MINOR: mux-quic: remove qcs from opening-list on free
      BUG/MINOR: mux-quic: handle properly alloc error in qcs_new()
      BUG/MEDIUM: h3: reject request with invalid header name
      BUG/MEDIUM: h3: reject request with invalid pseudo header
      MINOR: http: extract content-length parsing from H2
      BUG/MEDIUM: h3: parse content-length and reject invalid messages
      MINOR: http-htx: add BUG_ON to prevent API error on http_cookie_register
      BUG/MEDIUM: h3: fix cookie header parsing
      BUG/MINOR: h3: fix memleak on HEADERS parsing failure
      MINOR: h3: check return values of htx_add_* on headers parsing
      BUG/MINOR: quic: fix crash on PTO rearm if anti-amplification reset
      BUG/MEDIUM: mux-quic: fix double delete from qcc.opening_list
      MEDIUM: mux-quic: implement shutw
      MINOR: mux-quic: do not count stream flow-control if already closed
      MINOR: mux-quic: handle RESET_STREAM reception
      MEDIUM: mux-quic: implement STOP_SENDING emission
      MINOR: h3: use stream error when needed instead of connection
      BUG/MINOR: mux-quic: ignore remote unidirectional stream close

Aurelien DARRAGON (20):
      MINOR: event_hdl: add event handler base api
      DOC/MINOR: api: add documentation for event_hdl feature
      MINOR: server: add srv->rid (revision id) value
      MINOR: stats: add server revision id support
      MINOR: server/event_hdl: add support for SERVER_ADD and SERVER_DEL events
      MINOR: server/event_hdl: add support for SERVER_UP and SERVER_DOWN events
      BUG/MINOR: checks: restore legacy on-error fastinter behavior
      MINOR: check: use atomic for s->consecutive_errors
      MINOR: stats: properly handle ST_F_CHECK_DURATION metric
      MINOR: mworker: remove unused legacy code in mworker_cleanlisteners
      MINOR: peers: unused code path in process_peer_sync
      MINOR: stats: provide ctx for dumping functions
      MINOR: stats: introduce stats field ctx
      BUG/MINOR: stats: fix show stat json buffer limitation
      MINOR: stats: make show info json future-proof
      BUG/MINOR: proxy: free orgto_hdr_name in free_proxy()
      REGTEST: fix the race conditions in json_query.vtc
      REGTEST: fix the race conditions in add_item.vtc
      REGTEST: fix the race conditions in digest.vtc
      REGTEST: fix the race conditions in hmac.vtc

Bertrand Jacquin (1):
      BUG/MEDIUM: tests: use tmpdir to create UNIX socket

Cedric Paillet (2):
      BUG/MINOR: promex: create haproxy_backend_agg_server_status
      MINOR: promex: introduce haproxy_backend_agg_check_status

Christopher Faulet (17):
      BUG/MEDIIM: stconn: Flush output data before forwarding close to write 
side
      DOC: promex: Add missing backend metrics
      REGTESTS: fix the race conditions in iff.vtc
      BUG/MEDIUM: freq-ctr: Don't compute overshoot value for empty counters
      BUG/MEDIUM: resolvers: Use tick_first() to update the resolvers task 
timeout
      BUG/MEDIUM: mux-h1: Don't release H1 stream upgraded from TCP on error
      BUG/MINOR: mux-h1: Fix test instead a BUG_ON() in h1_send_error()
      BUG/MINOR: mux-h1: Report EOS on parsing/internal error for not running 
stream
      BUG/MINOR:: mux-h1: Never handle error at mux level for running connection
      BUG/MEDIUM: stats: Rely on a local trash buffer to dump the stats
      BUG/MEDIUM: mux-h2: Refuse interim responses with end-stream flag set
      BUG/MINOR: pool/stats: Use ullong to report total pool usage in bytes in 
stats
      BUG/MINOR: http-fetch: Only fill txn status during prefetch if not 
already set
      BUG/MAJOR: buf: Fix copy of wrapping output data when a buffer is 
realigned
      DOC: config: fix alphabetical ordering of http-after-response rules
      MINOR: http-rules: Add missing actions in http-after-response ruleset
      DOC: config: remove duplicated "http-response sc-set-gpt0" directive

Dragan Dosen (1):
      MEDIUM: 51d: add support for 51Degrees V4 with Hash algorithm

Ilya Shipitsin (5):
      CLEANUP: assorted typo fixes in the code and comments
      CI: github: split ssl lib selection based on git branch
      CI: github: remove redundant ASAN loop
      CI: github: split matrix for development and stable branches
      CI: github: enable github api authentication for OpenSSL tags read

Remi Tricot-Le Breton (21):
      MINOR: ssl: Remove unneeded buffer allocation in show ocsp-response
      MINOR: ssl: Remove unnecessary alloc'ed trash chunk in show ocsp-response
      BUG/MINOR: ssl: Fix memory leak of find_chain in ssl_sock_load_cert_chain
      MINOR: ssl: Add a lock to the OCSP response tree
      MINOR: httpclient: Make the CLI flags public for future use
      MINOR: ssl: Add helper function that extracts an OCSP URI from a 
certificate
      MINOR: ssl: Add OCSP request helper function
      MINOR: ssl: Add helper function that checks the validity of an OCSP 
response
      MINOR: ssl: Add "update ssl ocsp-response" cli command
      MEDIUM: ssl: Add ocsp_certid in ckch structure and discard ocsp buffer 
early
      MINOR: ssl: Add ocsp_update_tree and helper functions
      MINOR: ssl: Add crt-list ocsp-update option
      MINOR: ssl: Store 'ocsp-update' mode in the ckch_data and check for 
inconsistencies
      MEDIUM: ssl: Insert ocsp responses in update tree when needed
      MEDIUM: ssl: Add ocsp update task main function
      MEDIUM: ssl: Start update task if at least one ocsp-update option is set 
to on
      DOC: ssl: Add documentation for ocsp-update option
      REGTESTS: ssl: Add tests for ocsp auto update mechanism
      MINOR: ssl: Move OCSP code to a dedicated source file
      BUG/MINOR: ssl: Missing goto in error path in ocsp update code
      BUG/MINOR: http: Memory leak of http redirect rules' format string

Sébastien Gross (1):
      MINOR: config: add environment variables for default log format

Thayne McCombs (1):
      MINOR: sample: add param converter

Tim Duesterhus (9):
      CI: Improve headline in matrix.py
      CI: Add in-memory cache for the latest OpenSSL/LibreSSL
      CI: Use proper `if` blocks instead of conditional expressions in matrix.py
      CI: Unify the `GITHUB_TOKEN` name across matrix.py and vtest.yml
      CI: Explicitly check environment variable against `None` in matrix.py
      CI: Reformat `matrix.py` using `black`
      REGTESTS: Remove REQUIRE_VERSION=1.9 from all tests
      REGTESTS: Remove REQUIRE_VERSION=2.0 from all tests
      REGTESTS: Remove tests with REQUIRE_VERSION_BELOW=1.9

William Lallemand (25):
      MEDIUM: ssl: rename the struct "cert_key_and_chain" to "ckch_data"
      BUG/MINOR: ssl: initialize SSL error before parsing
      BUG/MINOR: ssl: initialize WolfSSL before parsing
      MINOR: mworker: display an alert upon a wait-mode exit
      BUG/MEDIUM: mworker: fix segv in early failure of mworker mode with peers
      BUG/MEDIUM: mworker: create the mcli_reload socketpairs in case of upgrade
      BUG/MEDIUM: httpclient/lua: double LIST_DELETE on end of lua task
      CI: github: reintroduce openssl 1.1.1
      REGTESTS: startup: check maxconn computation
      BUG/MINOR: startup: don't use internal proxies to compute the maxconn
      REGTESTS: startup: change the expected maxconn to 11000
      CI: github: set ulimit -n to a greater value
      REGTESTS: startup: activate automatic_maxconn.vtc
      CLEANUP: ssl: remove check on srv->proxy
      REGTESTS: startup: add alternatives values in automatic_maxconn.vtc
      REGTESTS: startup: disable automatic_maxconn.vtc
      BUILD: peers: peers-t.h depends on stick-table-t.h
      REGTESTS: ssl: enable the ssl_reuse.vtc test for WolfSSL
      BUG/MINOR: ssl/ocsp: check chunk_strcpy() in ssl_ocsp_get_uri_from_cert()
      CLEANUP: ssl/ocsp: add spaces around operators
      BUG/MINOR: ssl/ocsp: httpclient blocked when doing a GET
      MINOR: httpclient: don't add body when istlen is empty
      MEDIUM: httpclient: change the default log format to skip duplicate proxy 
data
      BUG/MINOR: httpclient/log: free of invalid ptr with httpclient_log_format
      CI: github: use the GITHUB_TOKEN instead of a manually generated token

Willy Tarreau (62):
      MINOR: debug: support pool filtering on "debug dev memstats"
      MINOR: debug: add a balance of alloc - free at the end of the memstats 
dump
      BUG/MEDIUM: checks: do not reschedule a possibly running task on state 
change
      BUG/MINOR: checks: make sure fastinter is used even on forced transitions
      BUG/MINOR: init/threads: continue to limit default thread count to max 
per group
      CLEANUP: init: remove useless assignment of nbthread
      BUILD: atomic: atomic.h may need compiler.h on ARMv8.2-a
      BUILD: makefile/da: also clean Os/ in Device Atlas dummy lib dir
      CLEANUP: pools: move the write before free to the uaf-only function
      CLEANUP: pool: only include pool-os from pool.c not pool.h
      REORG: pool: move all the OS specific code to pool-os.h
      CLEANUP: pools: get rid of CONFIG_HAP_POOLS
      DEBUG: pool: show a few examples in -dMhelp
      MINOR: pools: make DEBUG_UAF a runtime setting
      BUILD: 51d: fix build issue with recent compilers
      OPTIM: pool: split the read_mostly from read_write parts in pool_head
      MINOR: pool: make the thread-local hot cache size configurable
      MINOR: freq_ctr: add opportunistic versions of swrate_add()
      MINOR: pool: only use opportunistic versions of the swrate_add() functions
      BUG/MEDIUM: quic: properly take shards into account on bind lines
      BUG/MINOR: quic: do not allocate more rxbufs than necessary
      BUILD: makefile: build the features list dynamically
      BUILD: makefile: move common options-oriented macros to 
include/make/options.mk
      BUILD: makefile: sort the features list
      BUILD: makefile: initialize all build options' variables at once
      BUILD: makefile: add a function to collect all options' CFLAGS/LDFLAGS
      BUILD: makefile: start to automatically collect CFLAGS/LDFLAGS
      BUILD: makefile: ensure that all USE_* handlers appear before CFLAGS are 
used
      BUILD: makefile: clean the wolfssl include and lib generation rules
      BUILD: makefile: make sure to also ignore SSL_INC when using wolfssl
      BUILD: makefile: reference libdl only once
      BUILD: makefile: make sure LUA_INC and LUA_LIB are always initialized
      BUILD: makefile: do not restrict Lua's prepend path to empty LUA_LIB_NAME
      BUILD: makefile: never force -latomic, set USE_LIBATOMIC instead
      BUILD: makefile: add an implicit USE_MATH variable for -lm
      BUILD: makefile: properly report USE_PCRE/USE_PCRE2 in features
      CLEANUP: makefile: properly indent ifeq/ifneq conditional blocks
      BUILD: makefile: rework 51D to split v3/v4
      BUILD: makefile: support LIBCRYPT_LDFLAGS
      BUILD: makefile: support RT_LDFLAGS
      BUILD: makefile: support THREAD_LDFLAGS
      BUILD: makefile: support BACKTRACE_LDFLAGS
      BUILD: makefile: support SYSTEMD_LDFLAGS
      BUILD: makefile: support ZLIB_CFLAGS and ZLIB_LDFLAGS
      BUILD: makefile: support ENGINE_CFLAGS
      BUILD: makefile: support OPENSSL_CFLAGS and OPENSSL_LDFLAGS
      BUILD: makefile: support WOLFSSL_CFLAGS and WOLFSSL_LDFLAGS
      BUILD: makefile: support LUA_CFLAGS and LUA_LDFLAGS
      BUILD: makefile: support DEVICEATLAS_CFLAGS and DEVICEATLAS_LDFLAGS
      BUILD: makefile: support PCRE[2]_CFLAGS and PCRE[2]_LDFLAGS
      BUILD: makefile: refactor support for 51DEGREES v3/v4
      BUILD: makefile: support WURFL_CFLAGS and WURFL_LDFLAGS
      BUILD: makefile: make all OpenSSL variants use the same settings
      BUILD: makefile: remove the special case of the SSL option
      BUILD: makefile: only consider settings from enabled options
      BUILD: makefile: also list per-option settings in 'make opts'
      BUG/MINOR: debug: don't mask the TH_FL_STUCK flag before dumping threads
      MINOR: cfgparse-ssl: avoid a possible crash on OOM in ssl_bind_parse_npn()
      BUG/MINOR: stick-table: report the correct action name in error message
      BUG/MINOR: fd: avoid bad tgid assertion in fd_delete() from deinit()
      MEDIUM: stick-table: set the track-sc limit at boottime via 
tune.stick-counters
      MINOR: stick-table: implement the sc-add-gpc() action

Youfu Zhang (1):
      BUG/MAJOR: fcgi: Fix uninitialized reserved bytes

scientiamobile (1):
      LICENSE: wurfl: clarify the dummy library license.

---

Reply via email to