2024-11-28 19:11:42 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: haproxy: updated to 3.1.0 3.1.0 - BUG/MAJOR: mux-h1: Properly handle wrapping on obuf when dumping the first-line - BUILD: activity/memprofile: fix a build warning in the posix_memalign handler - BUG/MINOR: quic: Avoid BUG_ON() on ->on_pkt_lost() BBR callback call - CI: update to the latest AWS-LC version - CI: update to the latest WolfSSL version - DOC: ot: mention planned deprecation of the OT filter - Revert "CI: update to the latest WolfSSL version" - CI: github: add a WolfSSL job which tries the latest version - BUILD: systemd: fix usage of reserved name "sun" in the address field - BUILD: init: use the more portable FD_CLOEXEC for /dev/null - CI: github: improve the Wolfssl job - CI: github: improve the AWS-LC job - BUG/MINOR: mux-quic: fix show quic report of QCS prepared bytes - BUG/MEDIUM: quic: fix sending performance due to qc_prep_pkts() return - MINOR: mux-quic: use sched call time for pacing - CI: github: allow to run the Illumos job manually - BUILD: tcp_sample: var_fc_counter defined but not used - CI: github: add 'workflow_dispatch' on remaining build jobs - DOC: config: refine a little bit the text on QUIC pacing - MINOR: proto_sockpair: send_fd_uxst: init iobuf, cmsghdr, cmsgbuf to zeros - MINOR: startup: rename on_new_child_failure to mworker_on_new_child_failure - REORG: startup: move on_new_child_failure in mworker.c - MINOR: startup: prefix prepare_master and run_master with mworker_* - REORG: startup: move mworker_prepare_master in mworker.c - MINOR: startup: keep updating verbosity modes only in haproxy.c - REORG: startup: move mworker_run_master and mworker_loop in mworker.c - REORG: startup: move mworker_reexec and mworker_reload in mworker.c - MINOR: startup: prefix apply_master_worker_mode with mworker_* - REORG: startup: move mworker_apply_master_worker_mode in mworker.c - MINOR: cfgparse-quic: strengthen quic-cc-algo parsing - BUG/MAJOR: quic: fix wrong packet building due to already acked frames - DEV: lags/show-sess-to-flags: Properly handle fd state on server side - BUG/MEDIUM: http-ana: Don't release too early the L7 buffer - MINOR: quic: make bbr consider the max window size setting - DOC: quic: Amend the pacing information about BBR. - BUG/MEDIUM: quic: prevent EMSGSIZE with GSO for larger bufsize - MINOR: cli: Add a "help" keyword to show sess - MINOR: cli/quic: Add a "help" keyword to show quic - DOC: management: mention "show sess help" and "show quic help" - DOC: install: update the list of supported versions - MINOR: version: mention that 3.1 is stable now |
2024-11-09 12:20:10 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: haproxy: updated to 3.0.7 3.0.6 - MINOR: connection: No longer include stconn type header in connection-t.h - BUG/MINOR: h1: do not forward h2c upgrade header token - BUG/MINOR: h2: reject extended connect for h2c protocol - MINOR: mux-h1: Set EOI on SE during demux when both side are in DONE state - BUG/MEDIUM: mux-h1/mux-h2: Reject upgrades with payload on H2 side only - REGTESTS: h1/h2: Update script testing H1/H2 protocol upgrades - REGTESTS: shorten a bit the delay for the h1/h2 upgrade test - BUG/MINOR: mux-quic: report glitches to session - BUG/MEDIUM: cli: Be sure to catch immediate client abort - BUG/MEDIUM: cli: Deadlock when setting frontend maxconn - BUG/MINOR: server: make sure the HMAINT state is part of MAINT - BUG/MINOR: cfgparse-global: fix allowed args number for setenv - BUILD: tools: only include execinfo.h for the real backtrace() function - MINOR: tools: do not attempt to use backtrace() on linux without glibc - MINOR: task: define two new one-shot events for use with WOKEN_OTHER or MSG - BUG/MEDIUM: stream: make stream_shutdown() async-safe - BUG/MINOR: queue: make sure that maintenance redispatches server queue - MINOR: server: make srv_shutdown_sessions() call pendconn_redistribute() - BUG/MEDIUM: queue: always dequeue the backend when redistributing the last server - BUG/MINOR: mux-h1: Fix condition to set EOI on SE during zero-copy forwarding - BUG/MINOR: http-ana: Disable fast-fwd for unfinished req waiting for upgrade - MINOR: debug: make mark_tainted() return the previous value - MINOR: chunk: drop the global thread_dump_buffer - MINOR: debug: split ha_thread_dump() in two parts - MINOR: debug: slightly change the thread_dump_pointer signification - MINOR: debug: make ha_thread_dump_done() take the pointer to be used - MINOR: debug: replace ha_thread_dump() with its two components - MEDIUM: debug: on panic, make the target thread automatically allocate its buf - BUG/MEDIUM: server: server stuck in maintenance after FQDN change - BUG/MEDIUM: hlua: make hlua_ctx_renew() safe - BUG/MEDIUM: hlua: properly handle sample func errors in \ hlua_run_sample_{fetch,conv}() - BUG/MEDIUM: mux-quic: ensure timeout server is active for short requests - BUG/MEDIUM: queue: make sure never to queue when there's no more served conns - BUG/MINOR: httpclient: return NULL when no proxy available during httpclient_new() - BUG/MEDIUM: stconn: Wait iobuf is empty to shut SE down during a check send - BUG/MINOR: http-ana: Don't report a server abort if response payload is invalid - BUG/MEDIUM: stconn: Check FF data of SC to perform a shutdown in sc_notify() - BUG/MAJOR: filters/htx: Add a flag to state the payload is altered by a filter - REGTESTS: Never reuse server connection in http-messaging/truncated.vtc - BUG/MINOR: quic: avoid leaking post handshake frames - BUG/MEDIUM: quic: avoid freezing 0RTT connections - DOC: config: fix rfc7239 forwarded typo in desc - BUG/MINOR: mworker: fix mworker-max-reloads parser - BUG/MINOR: mux-quic: do not close STREAM with empty FIN if no data sent - BUG/MEDIUM: stats-html: Never dump more data than expected during 0-copy FF - BUG/MEDIUM: mux-h2: Remove H2S from send list if data are sent via 0-copy FF - BUG/MEDIUM: connection/http-reuse: fix address collision on unhandled address \ families - MINOR: activity/memprofile: always return "other" bin on NULL return \ address - MINOR: activity/memprofile: show per-DSO stats - BUG/MINOR: server: fix dynamic server leak with check on failed init - BUG/MEDIUM: stconn: Report blocked send if sends are blocked by an error - BUG/MINOR: http-ana: Fix wrong client abort reports during responses forwarding - BUG/MINOR: stconn: Don't disable 0-copy FF if EOS was reported on consumer side - BUG/MEDIUM: server: fix race on servers_list during server deletion - BUILD: debug: silence a build warning with threads disabled - MINOR: pools: export the pools variable - MINOR: debug: place a magic pattern at the beginning of post_mortem - MINOR: debug: place the post_mortem struct in its own section. - MINOR: debug: store important pointers in post_mortem - MINOR: cli: remove non-printable characters from 'debug dev fd' - BUG/MINOR: trace: stop rewriting argv with -dt - BUG/MINOR: ssl/cli: 'set ssl cert' does not check the transaction name correctly - DOC: config: add missing glitch_{cnt,rate} data types - DOC: config: add missing glitch_{cnt,rate} sample definitions - BUG/MEDIUM: mux-h1: Fix how timeouts are applied on H1 connections - BUG/MINOR: http-ana: Report internal error if an action yields on a final eval - MINOR: stream: Save last evaluated rule on invalid yield - BUG/MEDIUM: promex: Fix dump of extra counters - DOC: config: document connection error 44 (reverse connect failure) - CLEANUP: connection: properly name the CO_ER_SSL_FATAL enum entry - BUG/MINOR: quic: fix malformed probing packet building - MINOR: cli/debug: show dev: add cmdline and version - MINOR: stream/stats: Expose the current number of streams in stats - MINOR: stream/stats: Expose the total number of streams ever created in stats - BUG/MINOR: stats: Fix the name for the total number of streams created - MINOR: connection: add more connection error codes to cover common errno - MINOR: rawsock: set connection error codes when returning from recv/send/splice - MINOR: connection: add new sample fetch functions fc_err_name and bc_err_name - MINOR: debug: print gdb hints when crashing - MINOR: debug: do not limit backtraces to stuck threads - MINOR: debug: also add a pointer to struct global to post_mortem - MINOR: debug: also add fdtab and acitvity to struct post_mortem - MINOR: debug: remove the redundant process.thread_info array from post_mortem - MINOR: wdt: move the local timers to a struct - MINOR: debug: add a function to dump a stuck thread - DEBUG: wdt: better detect apparently locked up threads and warn about them - DEBUG: cli: make it possible for "debug dev loop" to trigger warnings - DEBUG: wdt: make the blocked traffic warning delay configurable - DEBUG: wdt: add a stats counter "BlockedTrafficWarnings" in show info - BUILD: debug: also declare strlen() in __ABORT_NOW() - BUILD: Missing inclusion header for ssize_t type - MINOR: debug: move the "recover now" warn message after the optional \ notes |
2024-09-30 19:09:27 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: haproxy: updated to 3.0.5 3.0.5 - BUG/MEDIUM: server/addr: fix tune.events.max-events-at-once event miss and leak - BUG/MEDIUM: stconn: Report error on SC on send if a previous SE error was set - BUG/MEDIUM: mux-pt/mux-h1: Release the pipe on connection error on sending path - BUILD: mux-pt: Use the right name for the sedesc variable - BUG/MINOR: stconn: bs.id and fs.id had their dependencies incorrect - BUG/MEDIUM: ssl: reactivate 0-RTT for AWS-LC - BUG/MEDIUM: ssl: 0-RTT initialized at the wrong place for AWS-LC - BUG/MEDIUM: quic: prevent conn freeze on 0RTT undeciphered content - BUG/MEDIUM: http-ana: Report error on write error waiting for the response - BUG/MEDIUM: h2: Only report early HTX EOM for tunneled streams - BUG/MEDIUM: mux-h2: Propagate term flags to SE on error in h2s_wake_one_stream - BUG/MEDIUM: peer: Notify the applet won't consume data when it waits for sync - BUG/MINOR: fcgi-app: handle a possible strdup() failure - DOC: configuration: fix alphabetical ordering of {bs,fs}.aborted - BUG/MINOR: trace/quic: enable conn/session pointer recovery from quic_conn - BUG/MINOR: trace/quic: permit to lock on frontend/connect/session etc - BUG/MEDIUM: trace: fix null deref in lockon mechanism since TRACE_ENABLED() - BUG/MINOR: trace: automatically start in waiting mode with "start \ <evt>" - BUG/MINOR: trace/quic: make "qconn" selectable as a lockon criterion - BUG/MINOR: quic/trace: make quic_conn_enc_level_init() emit NEW not CLOSE - BUG/MINOR: proto_tcp: delete fd from fdtab if listen() fails - BUG/MINOR: proto_tcp: keep error msg if listen() fails - MINOR: channel: implement ci_insert() function - BUG/MEDIUM: mworker/cli: fix pipelined modes on master CLI - REGTESTS: mcli: test the pipelined commands on master CLI - BUG/MINOR: mux-quic: do not send too big MAX_STREAMS ID - BUG/MINOR: proto_uxst: delete fd from fdtab if listen() fails - BUG/MINOR: h3: properly reject too long header responses - BUG/MINOR: pattern: pat_ref_set: fix UAF reported by coverity - BUG/MINOR: pattern: pat_ref_set: return 0 if err was found - DOC: config: correct the table for option tcplog - BUG/MINOR: cfgparse-global: remove tune.fast-forward from common_kw_list - BUILD: quic: 32bits build broken by wrong integer conversions for printf() - BUG/MEDIUM: clock: also update the date offset on time jumps - MINOR: tools: Implement ipaddrcpy(). - MINOR: quic: Implement quic_tls_derive_token_secret(). - MEDIUM: ssl/quic: implement quic crypto with EVP_AEAD - MINOR: quic: Token for future connections implementation. - BUG/MINOR: quic: Missing incrementation in NEW_TOKEN frame builder - MINOR: quic: Modify NEW_TOKEN frame structure (qf_new_token struct) - MINOR: quic: Implement qc_ssl_eary_data_accepted(). - MINOR: quic: Add trace for QUIC_EV_CONN_IO_CB event. - BUG/MEDIUM: quic: always validate sender address on 0-RTT - BUG/MINOR: quic: Crash from trace dumping SSL eary data status (AWS-LC) - BUG/MINOR: quic: Too short datagram during packet building failures (aws-lc only) - DOC: configuration: place the HAPROXY_HTTP_LOG_FMT example on the correct line - REGTESTS: fix random failures with wrong_ip_port_logging.vtc under load - BUG/MEDIUM: clock: detect and cover jumps during execution - BUG/MINOR: pattern: prevent const sample from being tampered in pat_match_beg() - BUG/MEDIUM: pattern: prevent UAF on reused pattern expr - BUG/MAJOR: mux-h1: Wake SC to perform 0-copy forwarding in CLOSING state - BUG/MINOR: h1-htx: Don't flag response as bodyless when a tunnel is established - BUG/MINOR: pattern: do not leave a leading comma on "set" error messages - MEDIUM: h1: Accept invalid T-E values with accept-invalid-http-response option - BUG/MINOR: polling: fix time reporting when using busy polling - BUG/MINOR: clock: make time jump corrections a bit more accurate - BUG/MINOR: clock: validate that now_offset still applies to the current date - BUG/MEDIUM: queue: implement a flag to check for the dequeuing - BUG/MINOR: peers: local entries updates may not be advertised after resync - DOC: config: Explicitly list relaxing rules for accept-invalid-http-* options - BUG/MEDIUM: sc_strm/applet: Wake applet after a successfull synchronous send - BUG/MEDIUM: cache/stats: Wait to have the request before sending the response - BUG/MEDIUM: promex: Wait to have the request before sending the response - BUG/MINOR: cfgparse-listen: fix option httpslog override warning message - MINOR: quic: convert qc_stream_desc release field to flags - MINOR: quic: implement function to check if STREAM is fully acked - BUG/MEDIUM: quic: handle retransmit for standalone FIN STREAM - BUG/MINOR: quic: prevent freeze after early QCS closure |
2024-09-14 10:00:14 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: haproxy: updated to 3.0.4 3.0.4 - MINOR: proto: extend connection thread rebind API - BUILD: listener: silence a build warning about unused value without threads - BUG/MEDIUM: quic: prevent crash on accept queue full - CLEANUP: proto: rename TID affinity callbacks - CLEANUP: quic: rename TID affinity elements - BUG/MINOR: session: Eval L4/L5 rules defined in the default section - BUG/MEDIUM: debug/cli: fix "show threads" crashing with low thread counts - DOC: install: don't reference removed CPU arg - BUG/MEDIUM: ssl_sock: fix deadlock in ssl_sock_load_ocsp() on error path - BUG/MAJOR: mux-h2: force a hard error upon short read with pending error - DOC: configuration: issuers-chain-path not compatible with OCSP - DOC: config: improve the http-keep-alive section - BUG/MINOR: stick-table: fix crash for src_inc_gpc() without stkcounter - BUG/MINOR: server: Don't warn fallback IP is used during init-addr resolution - BUG/MINOR: cli: Atomically inc the global request counter between CLI commands - BUG/MINOR: quic: Non optimal first datagram. - MEDIUM: sink: don't set NOLINGER flag on the outgoing stream interface - BUG/MINOR: quic: Lack of precision when computing K (cubic only cc) - BUG/MEDIUM: jwt: Clear SSL error queue on error when checking the signature - MINOR: quic: Dump TX in flight bytes vs window values ratio. - MINOR: quic: Add information to "show quic" for CUBIC cc. - MEDIUM: h1: allow to preserve keep-alive on T-E + C-L - MINOR: queue: add a function to check for TOCTOU after queueing - BUG/MEDIUM: queue: deal with a rare TOCTOU in assign_server_and_queue() - MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD (take 2) - BUG/MEDIUM: init: fix fd_hard_limit default in compute_ideal_maxconn - Revert "MEDIUM: sink: don't set NOLINGER flag on the outgoing stream \ interface" - MEDIUM: log: relax some checks and emit diag warnings instead in \ lf_expr_postcheck() - DOC: quic: fix default minimal value for max window size - MINOR: proxy: Add support of 429-Too-Many-Requests in retry-on status - BUG/MEDIUM: mux-h2: Set ES flag when necessary on 0-copy data forwarding - BUG/MEDIUM: stream: Prevent mux upgrades if client connection is no longer ready - BUG/MINIR: proxy: Match on 429 status when trying to perform a L7 retry - BUG/MEDIUM: mux-pt: Never fully close the connection on shutdown - BUG/MEDIUM: cli: Always release back endpoint between two commands on the mcli - BUG/MINOR: quic: unexploited retransmission cases for Initial pktns. - BUG/MEDIUM: mux-h1: Properly handle empty message when an error is triggered - MINOR: mux-h2: try to clear DEM_MROOM and MUX_MFULL at more places - BUG/MAJOR: mux-h2: always clear MUX_MFULL and DEM_MROOM when clearing the mbuf - BUG/MINOR: quic: Too shord datagram during O-RTT handshakes (aws-lc only) - BUG/MINOR: Crash on O-RTT RX packet after dropping Initial pktns - BUG/MEDIUM: mux-pt: Fix condition to perform a shutdown for writes in mux_pt_shut() |
2024-07-11 22:00:25 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: haproxy: updated to 3.0.3 3.0.3 - BUG/MINOR: log: fix broken '+bin' logformat node option - DEBUG: hlua: distinguish burst timeout errors from exec timeout errors - REGTESTS: ssl: fix some regtests 'feature cmd' start condition - BUG/MEDIUM: proxy: fix email-alert invalid free - DOC: configuration: fix alphabetical order of bind options - DOC: management: document ptr lookup for table commands - BUG/MAJOR: quic: fix padding with short packets - SCRIPTS: git-show-backports: do not truncate git-show output - DOC: api/event_hdl: small updates, fix an example and add some precisions - BUG/MINOR: h3: fix crash on STOP_SENDING receive after GOAWAY emission - BUG/MINOR: mux-quic: fix crash on qcs SD alloc failure - BUG/MINOR: h3: fix BUG_ON() crash on control stream alloc failure - BUG/MINOR: quic: fix BUG_ON() on Tx pkt alloc failure - DEV: flags/show-fd-to-flags: adapt to recent versions - BUG/MINOR: hlua: report proper context upon error in hlua_cli_io_handler_fct() - BUG/MEDIUM: stick-table: Decrement the ref count inside lock to kill a session - DOC: configuration: add details about crt-store in bind "crt" keyword - BUG/MINOR: server: fix first server template name lookup UAF - MINOR: activity: make the memory profiling hash size configurable at build time - BUG/MEDIUM: server/dns: prevent DOWN/UP flap upon resolution timeout or error - BUG/MEDIUM: h3: ensure the ":method" pseudo header is totally valid - BUG/MEDIUM: h3: ensure the ":scheme" pseudo header is totally valid - BUG/MEDIUM: quic: fix race-condition in quic_get_cid_tid() - BUG/MINOR: quic: fix race condition in qc_check_dcid() - BUG/MINOR: quic: fix race-condition on trace for CID retrieval - BUG/MEDIUM: quic: fix possible exit from qc_check_dcid() without unlocking - BUG/MINOR: promex: Remove Help prefix repeated twice for each metric - BUG/MEDIUM: hlua/cli: Fix lua CLI commands to work with applet's buffers - DOC: configuration: more details about the master-worker mode - BUG/MEDIUM: server: fix race on server_atomic_sync() - BUG/MINOR: jwt: don't try to load files with HMAC algorithm - MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD - DOC: configuration: update maxconn description - BUG/MEDIUM: peers: Fix crash when syncing learn state of a peer without appctx - Revert "MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD" - BUG/MINOR: jwt: fix variable initialisation - BUG/MINOR: h1: Fail to parse empty transfer coding names - BUG/MINOR: h1: Reject empty coding name as last transfer-encoding value - BUG/MEDIUM: h1: Reject empty Transfer-encoding header - BUG/MEDIUM: spoe: Be sure to create a SPOE applet if none on the current thread - DEV: flags/quic: decode quic_conn flags - BUG/MEDIUM: bwlim: Be sure to never set the analyze expiration date in past |
2024-06-14 17:26:55 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: haproxy: updated to 3.0.2 3.0.2 - MINOR: log: fix "http-send-name-header" ignore warning message - BUG/MINOR: proxy: fix server_id_hdr_name leak on deinit() - BUG/MINOR: proxy: fix log_tag leak on deinit() - BUG/MINOR: proxy: fix email-alert leak on deinit() - BUG/MINOR: proxy: fix check_{command,path} leak on deinit() - BUG/MINOR: proxy: fix dyncookie_key leak on deinit() - BUG/MINOR: proxy: fix source interface and usesrc leaks on deinit() - BUG/MINOR: proxy: fix header_unique_id leak on deinit() - BUG/MEDIUM: log: fix lf_expr_postcheck() behavior with default section - DOC: config: move "hash-key" from proxy to server options - DOC: config: add missing section hint for "guid" proxy keyword - DOC: config: add missing context hint for new server and proxy keywords - BUG/MINOR: promex: Skip resolvers metrics when there is no resolver section - MINOR: proxy: add proxy_free_common() helper function - BUG/MEDIUM: proxy: fix UAF with {tcp,http}checks logformat expressions - CLEANUP: log/proxy: fix comment in proxy_free_common() - BUG/MAJOR: mux-h1: Prevent any UAF on H1 connection after draining a request - BUG/MINOR: quic: fix padding of INITIAL packets - DOC/MINOR: management: add missed -dR and -dv options - DOC/MINOR: management: add -dZ option - DOC: management: rename show stats domain cli "dns" to \ "resolvers" |
2024-06-10 22:18:27 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: haproxy: updated to 3.0.1 3.0.1 - BUG/MINOR: cfgparse: remove the correct option on httpcheck send-state warning - BUG/MINOR: tcpcheck: report correct error in tcp-check rule parser - BUG/MINOR: tools: fix possible null-deref in env_expand() on out-of-memory - DOC: configuration: add an example for keywords from crt-store - BUG/MINOR: hlua: use CertCache.set() from various hlua contexts - BUG/MEDIUM: h1-htx: Don't state interim responses are bodyless - MEDIUM: stconn: Be able to unblock zero-copy data forwarding from done_fastfwd - BUG/MEDIUM: mux-quic: Unblock zero-copy forwarding if the txbuf can be released - BUG/MINOR: quic: prevent crash on qc_kill_conn() - CLEANUP: hlua: use hlua_pusherror() where relevant - BUG/MINOR: hlua: don't use lua_pushfstring() when we don't expect LJMP - BUG/MINOR: hlua: fix unsafe hlua_pusherror() usage - BUG/MINOR: hlua: prevent LJMP in hlua_traceback() - BUG/MINOR: hlua: fix leak in hlua_ckch_set() error path - CLEANUP: hlua: simplify ambiguous lua_insert() usage in hlua_ctx_resume() - BUG/MEDIUM: mux-quic: Don't unblock zero-copy fwding if blocked during nego - BUG/MEDIUM: ssl: wrong priority whem limiting ECDSA ciphers in ECDSA+RSA \ configuration - BUG/MEDIUM: ssl: bad auth selection with TLS1.2 and WolfSSL - BUG/MINOR: quic: fix computed length of emitted STREAM frames - BUG/MINOR: quic: ensure Tx buf is always purged - BUG/MEDIUM: stconn/mux-h1: Fix suspect change causing timeouts - BUG/MAJOR: mux-h1: Properly copy chunked input data during zero-copy nego - BUG/MINOR: mux-h1: Use the right variable to set NEGO_FF_FL_EXACT_SIZE flag |
2024-05-29 22:27:50 by Adam Ciarcinski | Files touched by this commit (4) | |
Log message: haproxy: updated to 3.0.0 HAProxy 3.0.0 was released on 2024/05/29. It added 21 new commits after version 3.0-dev13. I do appreciate that everything was only cosmetic. We're having a total of 1108 patches in this release among which 850 ones not concerning a bug, which makes it the smallest LTS release of all times (2.6 and 2.4 still remain the largest ones, respectively 65% and 58% larger). This is a good news in terms of expected stability, which might possibly break the old myth of "better avoid dot zero". Let's try to summarize what's new in this release. It has been one of the most difficult for me to summarize because I'm not seeing one big killer feature, instead it's an LTS as we like them: mostly a nice polishing of existing stuff and small improvements all over the place as permitted by the previous version's architectural changes. I tried to classify this into a few categories, depending on the intended benefits. First, let's enumerate the new features, and improvements of existing ones: - stats can finally be preserved across reloads for frontends, listeners, backends and servers. When using this, the config objects of the new process are preloaded with the relevant values from a dump of the previous process. This essentially concerns counters, ages and rates. Please have a look at "stats-file" and "dump \ stats-file" for more information. - the log outgoing load-balancing now relies on a regular backend, meaning that the load balancing algorithms could finally be unified with the ones used by other protocols, and servers now support weights. - log-format now supports JSON and CBOR output encoding. In such a case, the field name is taken from a new naming scheme that is placed within the log-format itself, allowing to assign a name to each field. - the load balancing algorithm "sticky" that was initially reserved for logs was generalized to other protocols. - the HTTP/2 RST_STREAM reason code can finally be forwarded to the server for client aborts. This addresses the problem a few users were facing with gRPC where request cancellation appeared as communication errors the server side. For now this is purposely limited to only a few reason codes that are relevant to gRPC so that we don't ruin the possibility to later extend that to H3 and maybe H1. - QUIC now supports the HyStart++ (RFC9406) alternative to slowstart with the Cubic algorithm. It's supposed to show better recovery patterns. It's not yet enabled by default. - a new set of converters, map_*_key, will report the matching part of the key itself instead of the associated pattern. The main target use cases for this is to know what address mask an address did match, or what regex a pattern did match. - the "uuid()" sample fetch function, which takes an optional version in argument now also supports "7" for UUIDv7. These UUIDs regroup many properties found in ULID and other mechanisms, one of the most interesting one being time-based locality that, for example, eases the archiving of old data, or the grouping of events on systems where they'll be processed together. - 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). It also allows to entirely drop SSL from the server. - the "namespace" argument now works for "bind" and \ "server" lines using UNIX sockets. - Linux capabilities: the use of namespaces on the server side used to require capability "cap_sys_admin" but it was neither checked nor reported on startup to it would silently fail. The capability is now supported and is being checked for. Similarly, the need for capabilities for transparent proxying or QUIC are checked and reported on startup. Finally, file-system capabilities set on the executable are also supported now. - the set-mark/set-tos actions were extended to support an expression in addition of the constant, and were extended to also support the backend side. This can for example be used to select an outgoing link from a single IP address. The new backend actions are called "set-bc-mark" and "set-bc-tos", and by analogy new frontend actions called \ "set-fc-mark" and "set-fc-tos" were created, and the old actions are aliases of these last ones. - QUIC built with latest AWS-LC TLS library now correctly supports 0-RTT. - a new global setting "ssl-security-level" allows to adjust OpenSSL's internal security level beween 0 and 5. Previously it could only be done in openssl.cnf. - the key used by consistent hash to map to a server used to always be the server's id (either explicit or implicit, position-based), but that was not always convenient when dealing with fast added-removed server within a large fleet of LBs. Now the "hash-key" directive will also allow to use the server's address or address+port for this so that the same key ends up on the same server for all LBs. - The HTTP client now has an option to use either origin or absolute URIs. This should make it easier to configure it to talk to old servers which are not spec-compliant and do not support absolute URIs. The ocsp_update agent already exploits this ability via a new setting "ocsp-update.httpproxy". - it is now possible to suppress Content-Length and Transfer-Encoding headers from HTTP/1 requests and responses. It must never be done of course but there are rare situations where users dealing with bogus clients or server need to perform such cleanups. Most of the time when done, this will mark a connection non-reusable and it will be closed at the end of the transfer. - the proxy protocol now also parses TLV for LOCAL mode and supports sending them without a stream so that elements can be passed during the preconnect phase of a reverse-HTTP instance to a next stage that will no longer ignore them. - the new sched_setaffinity() of FreeBSD 14 and newer is now supported. - the new certificate selection callback for WolfSSL was now enabled since it's finally available in the upstream project. |