Hi, HAProxy 2.8-dev9 was released on 2023/04/28. It added 58 new commits after version 2.8-dev8.
This version has much less changes than previous one, that's nice. 20 of these patches are bug fixes. Fred & Amaury finally found and fixed the last bug that was causing crashes for Tristan whose help was again invaluable in nailing this one down. Christopher fixed a bug introduced in 2.8-dev7 by which two stconn flags with the same value caused a rare case where some connections could freeze without timing out. It took us days before capturing one so I doubt they were much noticed. The cleanup of the internal "now" variable revealed something like 4 or 5 occurrences of incorrect usage where we were showing the user a possibly drifting or shifted date. These were emphasized with 2.8-dev2's early wrap-around, which indicates it was an effective move. William's script for acme.sh was merged into admin/acme.sh/ with a readme and an explanation on the wiki on how to use it on regular distros. Alex's bc_rtt sample-fetch functions were finally merged. These will be useful for those who wish to log the network latency to a given server. The BUG_ON() conditions switched to using an illegal instruction on x86 and arm64 so as to make issue reports faster to qualify; previously they would all report "SIGSEGV" which could have various causes. Other than that, some cleanups in various areas (variables renaming mainly), some CI and build updates, and traces improvements. 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 : Aleksandar Lazic (1): MINOR: sample: Add bc_rtt and bc_rttvar Amaury Denoyelle (11): CLEANUP: quic: rename frame types with an explicit prefix CLEANUP: quic: rename frame variables BUG/MEDIUM: mux-quic: do not emit RESET_STREAM for unknown length BUG/MEDIUM: mux-quic: improve streams fairness to prevent early timeout BUG/MINOR: quic: prevent buggy memcpy for empty STREAM MINOR: mux-quic: do not set buffer for empty STREAM frame MINOR: mux-quic: do not allocate Tx buf for empty STREAM frame MINOR: quic: finalize affinity change as soon as possible BUG/MINOR: quic: fix race on quic_conns list during affinity rebind MINOR: quic: use real sending rate measurement MINOR: proxy: factorize send rate measurement Christopher Faulet (4): BUG/MEDIUM: spoe: Don't start new applet if there are enough idle ones BUG/MINOR: stconn: Fix SC flags with same value BUG/MINOR: resolvers: Use sc_need_room() to wait more room when dumping stats BUG/MEDIUM: tcpcheck: Don't eval custom expect rule on an empty buffer Frédéric Lécaille (16): MINOR: quic: Move traces at proto level BUG/MINOR: quic: Possible memory leak from TX packets BUG/MINOR: quic: Possible leak during probing retransmissions BUG/MINOR: quic: Useless probing retransmission in draining or killing state BUG/MINOR: quic: Useless I/O handler task wakeups (draining, killing state) CLEANUP: quic: Remove useless parameters passes to qc_purge_tx_buf() CLEANUP: quic: Rename <buf> variable to <token> in quic_generate_retry_token() CLEANUP: quic: Rename <buf> variable into quic_padding_check() CLEANUP: quic: Rename <buf> variable into quic_rx_pkt_parse() CLEANUP: quic: Rename <buf> variable for several low level functions CLEANUP: quic: Make qc_build_pkt() be more readable CLEANUP: quic: Rename quic_get_dgram_dcid() <buf> variable CLEANUP: quic: Rename several <buf> variables at low level CLEANUP: quic: Rename <buf> variable into quic_packet_read_long_header() CLEANUP: quic: Rename <buf> variable into qc_parse_hd_form() CLEANUP: quic: Rename several <buf> variables into quic_sock.c Ilia Shipitsin (2): CI: switch to Fastly CDN to download LibreSSL BUILD: ssl: switch LibreSSL to Fastly CDN William Lallemand (1): MINOR: acme.sh: add the deploy script for acme.sh in admin directory Willy Tarreau (23): DEBUG: crash using an invalid opcode on x86/x86_64 instead of an invalid access DEBUG: crash using an invalid opcode on aarch64 instead of an invalid access DEV: h2: add a script "mkhdr" to build h2 frames from scratch DEV: h2: support reading frame payload from a file BUG/MINOR: clock: fix a few occurrences of 'now' being used in place of 'date' BUG/MINOR: spoe: use "date" not "now" in debug messages BUG/MINOR: activity: show wall-clock date, not internal date in show activity BUG/MINOR: opentracing: use 'date' instead of 'now' in debug output Revert "BUG/MINOR: clock: fix a few occurrences of 'now' being used in place of 'date'" BUG/MINOR: calltrace: fix 'now' being used in place of 'date' BUG/MINOR: trace: show wall-clock date, not internal date in show activity BUG/MINOR: hlua: return wall-clock date, not internal date in core.now() BUG/MINOR: stats: report the correct start date in "show info" MINOR: time: add conversions to/from nanosecond timestamps MINOR: time: replace calls to tv_ms_elapsed() with a linear subtract MINOR: spoe: switch the timeval-based timestamps to nanosecond timestamps MEDIUM: tree-wide: replace timeval with nanoseconds in tv_accept and tv_request MINOR: stats: use nanoseconds, not timeval to compute uptime MINOR: activity: use nanoseconds, not timeval to compute uptime MINOR: checks: use a nanosecond counters instead of timeval for checks->start MINOR: clock: do not use now.tv_sec anymore MEDIUM: clock: replace timeval "now" with integer "now_ns" MINOR: clock: replace the timeval start_time with start_time_ns ---