Hi,

HAProxy 2.6-dev1 was released on 2022/02/01. It added 379 new commits
after version 2.6-dev0.

That first development release is huge (379 commits), essentially because
by being busy on bugs we didn't see the time fly and forgot to emit earlier
versions as I wanted to. Too bad. Now the punishment is to read all this
and try to build up a friendly changelog!

I'm going to skip over the 51 bugs fixed as they're not interesting at this
stage, and will try to focus on new features and improvements in general
(stability, performance or convenience). Do not see any offence if your
work is not mentioned, and just chime in if you want to add or rectify
something:

  - QUIC: lots of improvements, too many to tell actually, this covers
    167 patches or almost half of the changes. The architectural elements
    are starting to assemble well, some rough edges were polished and
    overall things are getting much better. The interop test reports at
    https://interop.seemann.io/ shows that we have nothing to be ashamed
    of and that our implementation is now on par with some others, which
    is very encouraging. I'm starting to get confident that it will be
    usable in 2.6, but I don't want to put needless pressure on the team
    by promising difficult things, the project itself is of an extremely
    high level of complexity.

  - pools: the cluster-based shared allocator was finally implemented. It
    allows highly threaded environments to rely on the shared allocator
    when the one provided by the system doesn't scale well with threads.
    Recently we used to disable it for modern allocators (jemalloc or
    glibc >= 2.26) but plenty of users are still relying on different ones
    and we needed to improve this situation. The new allocator is sometimes
    slightly faster, sometimes slightly slower than the fastest allocators,
    so this alone couldn't be a decisive factor to enable it or not. Thus
    I preferred to keep it disabled in such situations so that we focus on
    minimizing the memory usage. Last but not least, memory trimming is now
    supported with jemalloc.

  - master-worker: some simplifications were applied to the way the new
    process connects to the old one to retrieve listening sockets. In the
    past it would rely on "-x" on the command line, or would try to connect
    to the first socket that had the "expose-fd listener" statement. Now
    the new process will simply reuse the existing worker socket to
    retrieve the old socket FDs so that it will work even without a stats
    socket. As such "-x" is no more used in master mode.

  - variables: the set-var() converters now support a number of conditions
    like "ifexists", "ifset", "ifgt" and so on that are convenient to avoid
    systematically writing two rules to build them. We indeed noticed in
    some complex configs that such constructs were very common (e.g. to
    store a new max or to update a variable only if it was set). Conditions
    may be combined and can sometimes be used to reduce 3 or more rules to
    a single, more efficient and more maintainable one.

  - DeviceAtlas: update of the module to support live updates of the
    database. An external program can connect to a shared memory area
    and feed the new entries without having to reload HAProxy.

  - NUMA topology detection is now also supported on FreeBSD, and the
    CPU affinity API was updated to support the upcoming FreeBSD 14 which
    uses a linux-like API.

  - new debugging features: DEBUG_POOL_INTEGRITY will read and write
    patterns to allocated/released memory areas to check for corruption
    that may result from use-after-free or even hardware trouble,
    DEBUG_POOL_TRACING will help figure last users of a given area,
    expert-mode "debug dev fd" will report fantom file descriptors that
    are present in the process but unknown to haproxy (indicating a leak,
    or even possibly a malware in some dependencies), and a few extra
    sanity checks at a few places. On the CLI, "show version" shows the
    haproxy version (and was backported to stable branches). "show libs"
    will report all loaded shared libraries. The same may be achieved at
    startup time, in a way that eases the production of a tar file
    containing the haproxy executable and all dependencies so as to help
    users provide an exploitable core dump when needed.

  - and overall plenty of cleanups, build fixes and improvements (faster
    builds for developers and CI), some small but useful options (e.g:
    option idle-close-on-response to work around a bug or limitation in
    AWS LBs), more flexibility (e.g. setting expert/experimental mode from
    master CLI is now possible; "capture" action in http-after-response),
    doc updates.

While reading some doc recently I also noticed that when I added the
"set-var-fmt" action late in the 2.5 cycle, I wasn't much inspired when
chosing the name, because while the word "fmt" is used a lot to designate
a format-string argument in the doc, it's not used in config keywords
which tend to agree on "lf" for "log-format". Given that this was only
very recently introduced in 2.5, I was thinking about renaming it to
"set-var-lf" before it becomes popular and backporting it to 2.5. There
we could have a warning on "set-var-fmt" indicating that it's renamed
"set-var-lf" in 2.6 so that we don't break working configs and we ease
the transition. As usual, opinions are welcome!

I mentioned we've spent a lot of time on painfully unreproducible bugs.
we probably have nailed one down (the one causing FD leaks on reloads,
that in fact involved chaining multiple tiny bugs combined with an
occasional binding error), but the rare crashes are still present, as
occasionally reported by Christian or Yves. These ones are also the
reasons why we're improving the debugging tools and the internal checks.
Some of us have started to discuss about adding extra checks at various
levels that would allow to trade between maximum performance and maximum
reliability (there are checks for impossible cases you normally don't
want to run in certain fast paths... unless you're getting crazy after
a bug). We've also been discussing about improving our ability to do
some configurable fault injection at various key locations, to speed up
reproduction of some highly unlikely corner cases (for now it remains
extremely limited).

The new version was already deployed on haproxy.org and the nature of the
changes merged in make it pretty safe for testing at this point for those
curious about the new features or who want to see if an issue they're
seeing in 2.5 disappeared. As usual I'll tell you when the merged changes
become scary. 2.6-dev0 lasted for 2 months without a glitch, but usually
-dev0 versions are the only ones to last some time before being updated
so they have no merit :-) 

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.6/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.6/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Thanks to all participants!

Willy
---
Complete changelog :
Amaury Denoyelle (91):
      MINOR: quic: do not reject PADDING followed by other frames
      REORG: quic: add comment on rare thread concurrence during CID alloc
      CLEANUP: quic: add comments on CID code
      MEDIUM: quic: handle CIDs to rattach received packets to connection
      MINOR: qpack: support litteral field line with non-huff name
      MINOR: quic: activate QUIC traces at compilation
      MINOR: quic: use more verbose QUIC traces set at compile-time
      MINOR: quic: fix segfault on CONNECTION_CLOSE parsing
      MINOR: h3: add BUG_ON on control receive function
      MEDIUM: xprt-quic: finalize app layer initialization after ALPN nego
      MINOR: h3: remove duplicated FIN flag position
      MAJOR: mux-quic: implement a simplified mux version
      MEDIUM: mux-quic: implement release mux operation
      MEDIUM: quic: detect the stream FIN
      MINOR: mux-quic: implement subscribe on stream
      MEDIUM: mux-quic: subscribe on xprt if remaining data after send
      MEDIUM: mux-quic: wake up xprt on data transferred
      MEDIUM: mux-quic: handle when sending buffer is full
      MINOR: hq-interop: fix tx buffering
      MINOR: mux-quic: remove uneeded code to check fin on TX
      MINOR: quic: add HTX EOM on request end
      BUILD: mux-quic: fix compilation with DEBUG_MEM_STATS
      MINOR: mux-quic: do not release qcs if there is remaining data to send
      MINOR: quic: notify the mux on CONNECTION_CLOSE
      BUG/MINOR: mux-quic: properly initialize flow control
      MINOR: h3: fix possible invalid dereference on htx parsing
      MINOR: hq-interop: refix tx buffering
      CLEANUP: cfgparse: modify preprocessor guards around numa detection code
      MINOR: mux-quic: fix trace on stream creation
      CLEANUP: quic: fix spelling mistake in a trace
      CLEANUP: quic: rename quic_conn conn to qc in quic_conn_free
      MINOR: quic: add missing lock on cid tree
      MINOR: quic: rename constant for haproxy CIDs length
      MINOR: quic: refactor concat DCID with address for Initial packets
      MINOR: quic: compare coalesced packets by DCID
      MINOR: quic: refactor DCID lookup
      MINOR: quic: simplify the removal from ODCID tree
      CLEANUP: quic: rename quic_conn instances to qc
      REORG: quic: move mux function outside of xprt
      MINOR: quic: add reference to quic_conn in ssl context
      MINOR: quic: add const qualifier for traces function
      MINOR: trace: add quic_conn argument definition
      MINOR: quic: use quic_conn as argument to traces
      MINOR: quic: add quic_conn instance in traces for qc_new_conn
      REORG: quic: remove qc_ prefix on functions which not used it directly
      BUG/MINOR: quic: upgrade rdlock to wrlock for ODCID removal
      MINOR: quic: remove unnecessary call to free_quic_conn_cids()
      MINOR: quic: store ssl_sock_ctx reference into quic_conn
      MINOR: quic: remove unnecessary if in qc_pkt_may_rm_hp()
      MINOR: quic: replace usage of ssl_sock_ctx by quic_conn
      MINOR: quic: delete timer task on quic_close()
      MEDIUM: quic: implement refcount for quic_conn
      BUG/MINOR: quic: fix potential null dereference
      BUG/MINOR: quic: fix potential use of uninit pointer
      MINOR: quic: fix return of quic_dgram_read
      MINOR: quic: add config parse source file
      MINOR: quic: implement Retry TLS AEAD tag generation
      MEDIUM: quic: implement Initial token parsing
      MINOR: quic: define retry_source_connection_id TP
      MEDIUM: quic: implement Retry emission
      MINOR: quic: free xprt tasklet on its thread
      MINOR: quic: do not use quic_conn after dropping it
      MINOR: quic: adjust quic_conn refcount decrement
      MINOR: quic: fix race-condition on xprt tasklet free
      MINOR: quic: free SSL context on quic_conn free
      MINOR: quic: add missing include in quic_sock
      MINOR: quic: fix indentation in qc_send_ppkts
      MINOR: quic: remove dereferencement of connection when possible
      MINOR: quic: set listener accept cb on parsing
      MEDIUM: quic/ssl: add new ex data for quic_conn
      MINOR: quic: initialize ssl_sock_ctx alongside the quic_conn
      MINOR: ssl: fix build in release mode
      MINOR: quic: refactor header protection removal
      MINOR: quic: handle app data according to mux/connection layer status
      MINOR: quic: refactor app-ops initialization
      MINOR: receiver: define a flag for local accept
      MEDIUM: quic: flag listener for local accept
      MINOR: quic: do not manage connection in xprt snd_buf
      MINOR: quic: remove wait handshake/L6 flags on init connection
      MINOR: listener: add flags field
      MINOR: quic: define QUIC flag on listener
      MINOR: quic: create accept queue for QUIC connections
      MINOR: listener: define per-thr struct
      MAJOR: quic: implement accept queue
      MINOR: quic: refactor quic CID association with threads
      MINOR: mux-quic: add comment
      MINOR: mux-quic: properly initialize qcc flags
      MINOR: mux-quic: do not consider CONNECTION_CLOSE for the moment
      MINOR: mux-quic: create a timeout task
      MEDIUM: mux-quic: delay the closing with the timeout
      MINOR: mux-quic: release idle conns on process stopping

Bertrand Jacquin (1):
      BUG/MINOR: lua: remove loop initial declarations

Christopher Faulet (28):
      BUG/MINOR: cache: Fix loop on cache entries in "show cache"
      BUG/MEDIUM: cli: Properly set stream analyzers to process one command at 
a time
      BUG/MEDIUM: mux-h1: Fix splicing by properly detecting end of message
      BUG/MINOR: mux-h1: Fix splicing for messages with unknown length
      MINOR: mux-h1: Improve H1 traces by adding info about http parsers
      MINOR: mux-h1: register a stats module
      MINOR: mux-h1: add counters instance to h1c
      MINOR: mux-h1: count open connections/streams on stats
      MINOR: mux-h1: add stat for total count of connections/streams
      MINOR: mux-h1: add stat for total amount of bytes received and sent
      REGTESTS: h1: Add a script to validate H1 splicing support
      BUG/MINOR: server: Don't rely on last default-server to init server SSL 
context
      BUG/MEDIUM: resolvers: Detach query item on response error
      MEDIUM: resolvers: No longer store query items in a list into the response
      BUG/MEDIUM: h1: Properly reset h1m flags when headers parsing is restarted
      BUG/MINOR: resolvers: Don't overwrite the error for invalid query domain 
name
      BUILD: bug: Fix error when compiling with -DDEBUG_STRICT_NOCRASH
      DOC: spoe: Clarify use of the event directive in spoe-message section
      DOC: config: Specify %Ta is only available in HTTP mode
      MINOR: http-rules: Add capture action to http-after-response ruleset
      BUG/MINOR: cli/server: Don't crash when a server is added with a custom id
      BUG/MEDIUM: http-ana: Preserve response's FLT_END analyser on L7 retry
      BUG/MAJOR: mux-h1: Don't decrement .curr_len for unsent data
      BUG/MEDIUM: htx: Adjust length to add DATA block in an empty HTX buffer
      BUG/MEDIUM: cli: Never wait for more data on client shutdown
      BUG/MEDIUM: resolvers: Really ignore trailing dot in domain names
      DEV: flags: Add missing flags
      BUG/MINOR: sink: Use the right field in appctx context in release callback

Daniel Jakots (1):
      BUILD: ssl: unbreak the build with newer libressl

David Carlier (12):
      MEDIUM: pool: Following up on previous pool trimming update.
      MEDIUM: cfgparse: numa detect topology on FreeBSD.
      BUILD/MINOR: cpuset FreeBSD 14 build fix.
      MINOR: cpuset: switch to sched_setaffinity for FreeBSD 14 and above.
      BUILD: cpuset: fix build issue on macos introduced by previous change
      MEDIUM: pool: refactor malloc_trim/glibc and jemalloc api addition 
detections.
      MEDIUM: pool: support purging jemalloc arenas in trim_all_pools()
      BUILD/MINOR: tools: solaris build fix on dladdr.
      BUILD/MINOR: fix solaris build with clang.
      MEDIUM: da: new optional data file download scheduler service.
      MEDIUM: da: update doc and build for new scheduler mode service.
      MEDIUM: da: update module to handle schedule mode.

Emeric Brun (1):
      BUG/MAJOR: segfault using multiple log forward sections.

Frédéric Lécaille (114):
      MINOR: quic: Set "no_application_protocol" alert
      MINOR: quic: More accurate immediately close.
      MINOR: quic: Immediately close if no transport parameters extension found
      MINOR: quic: Rename qc_prep_hdshk_pkts() to qc_prep_pkts()
      MINOR: quic: Possible crash when inspecting the xprt context
      MINOR: quic: Dynamically allocate the secrete keys
      MINOR: quic: Add a function to derive the key update secrets
      MINOR: quic: Add structures to maintain key phase information
      MINOR: quic: Optional header protection key for quic_tls_derive_keys()
      MINOR: quic: Add quic_tls_key_update() function for Key Update
      MINOR: quic: Enable the Key Update process
      MINOR: quic: Delete the ODCIDs asap
      MINOR: quic: RX buffer full due to wrong CRYPTO data handling
      MINOR: quic: Race issue when consuming RX packets buffer
      MINOR: quic: QUIC encryption level RX packets race issue
      MINOR: quic: Delete remaining RX handshake packets
      MINOR: quic: Remove QUIC TX packet length evaluation function
      MINOR: quic: Compilation fix for quic_rx_packet_refinc()
      MINOR: quic: Attach timer task to thread for the connection.
      CLEANUP: quic_frame: Remove a useless suffix to STOP_SENDING
      MINOR: quic: Add traces for STOP_SENDING frame and modify others
      CLEANUP: quic: Remove cdata_len from quic_tx_packet struct
      MINOR: quic: Enable TLS 0-RTT if needed
      MINOR: quic: No TX secret at EARLY_DATA encryption level
      MINOR: quic: Add quic_set_app_ops() function
      MINOR: ssl_sock: Set the QUIC application from 
ssl_sock_advertise_alpn_protos.
      MINOR: quic: Make xprt support 0-RTT.
      MINOR: qpack: Missing check for truncated QPACK fields
      CLEANUP: quic: Comment fix for qc_strm_cpy()
      MINOR: hq_interop: Stop BUG_ON() truncated streams
      MINOR: quic: Do not mix packet number space and connection flags
      CLEANUP: quic: Shorten a litte bit the traces in lstnr_rcv_pkt()
      MINOR: quic: Increase the RX buffer for each connection
      MINOR: quic: Add a function to list remaining RX packets by encryption 
level
      MINOR: quic: Stop emptying the RX buffer asap.
      MINOR: quic: Do not expect to receive only one O-RTT packet
      MINOR: quic: Do not forget STREAM frames received in disorder
      MINOR: quic: Wrong packet refcount handling in qc_pkt_insert()
      MINOR: quic: Add stream IDs to qcs_push_frame() traces
      MINOR: quic: unchecked qc_retrieve_conn_from_cid() returned value
      MINOR: quic: Wrong dropped packet skipping
      MINOR: quic: Handle the cases of overlapping STREAM frames
      MINOR: quic: xprt traces fixes
      MINOR: quic: Drop asap Retry or Version Negotiation packets
      MINOR: quic: Add traces for RX frames (flow control related)
      MINOR: quic: Add CONNECTION_CLOSE phrase to trace
      MINOR: quic: Wrong traces after rework
      MINOR: quic: Add trace about in flight bytes by packet number space
      MINOR: quic: Wrong first packet number space computation
      MINOR: quic: Wrong packet number space computation for PTO
      MINOR: quic: Wrong loss time computation in qc_packet_loss_lookup()
      MINOR: quic: Wrong ack_delay compution before calling 
quic_loss_srtt_update()
      MINOR: quic: Remove nb_pto_dgrams quic_conn struct member
      MINOR: quic: Wrong packet number space trace in qc_prep_pkts()
      MINOR: quic: Useless test in qc_prep_pkts()
      MINOR: quic: qc_prep_pkts() code moving
      MINOR: quic: Speeding up Handshake Completion
      MINOR: quic: Probe Initial packet number space more often
      MINOR: quic: Probe several packet number space upon timer expiration
      MINOR: quic: Comment fix.
      MINOR: quic: Improve qc_prep_pkts() flexibility
      MINOR: quic: Do not drop secret key but drop the CRYPTO data
      MINOR: quic: Prepare Handshake packets asap after completed handshake
      MINOR: quic: Flag asap the connection having reached the 
anti-amplification limit
      MINOR: quic: PTO timer too often reset
      MINOR: quic: Re-arm the PTO timer upon datagram receipt
      MINOR: quic: Only one CRYPTO frame by encryption level
      MINOR: quic: Missing retransmission from qc_prep_fast_retrans()
      MINOR: quic: Non-optimal use of a TX buffer
      MINOR: quic: Remaining TRACEs with connection as firt arg
      MINOR: quic: Reset ->conn quic_conn struct member when calling 
qc_release()
      MINOR: quic: Flag the connection as being attached to a listener
      MINOR: quic: Wrong CRYPTO frame concatenation
      MINOR: quid: Add traces quic_close() and quic_conn_io_cb()
      MINOR: quic: Do not dereference ->conn quic_conn struct member
      MINOR: quic: As server, skip 0-RTT packet number space
      MINOR: quic: Do not wakeup the I/O handler before the mux is started
      MINOR: quic: Retransmit the TX frames in the same order
      MINOR: quic: Remove the packet number space TX MT_LIST
      MINOR: quic: Splice the frames which could not be added to packets
      MINOR: quic: Add the number of TX bytes to traces
      CLEANUP: quic: Replace <nb_pto_dgrams> by <probe>
      MINOR: quic: Send two ack-eliciting packets when probing packet number 
spaces
      MINOR: quic: Probe regardless of the congestion control
      MINOR: quic: Speeding up handshake completion
      MINOR: quic: Release RX Initial packets asap
      MINOR: quic: Release asap TX frames to be transmitted
      MINOR: quic: Probe even if coalescing
      MINOR: quic: Add QUIC_FT_RETIRE_CONNECTION_ID parsing case
      MINOR: quic: Wrong packet number space selection
      MINOR: quic: No DCID length for datagram context
      MINOR: quic: Comment fix about the token found in Initial packets
      MINOR: quic: Get rid of a struct buffer in quic_lstnr_dgram_read()
      MINOR: quic: Remove the QUIC haproxy server packet parser
      MINOR: quic: Add new defintion about DCIDs offsets
      MINOR: quic: Add a list to QUIC sock I/O handler RX buffer
      MINOR: quic: Allocate QUIC datagrams from sock I/O handler
      MINOR: proto_quic: Allocate datagram handlers
      MINOR: quic: Pass CID as a buffer to quic_get_cid_tid()
      MINOR: quic: Convert quic_dgram_read() into a task
      CLEANUP: quic: Remove useless definition
      MINOR: proto_quic: Wrong allocations for TX rings and RX bufs
      MINOR: quic: Do not consume the RX buffer on QUIC sock i/o handler side
      MINOR: quic: Do not reset a full RX buffer
      MINOR: quic: Attach all the CIDs to the same connection
      MINOR: quic: Make usage of by datagram handler trees
      MINOR: quic: Drop Initial packets with wrong ODCID
      MINOR: quic: Wrong RX buffer tail handling when no more contiguous data
      MINOR: quic: Iterate over all received datagrams
      MINOR: quic: Try to accept 0-RTT connections
      MINOR: quic: Do not try to treat 0-RTT packets without started mux
      MINOR: quic: Do not try to accept a connection more than one time
      MINOR: quic: Initialize the connection timer asap
      MINOR: quic: Do not use connection struct xprt_ctx too soon

Ilya Shipitsin (10):
      REGTESTS: ssl: use X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY for cert 
check
      CI: Github Actions: do not show VTest failures if build failed
      CLEANUP: assorted typo fixes in the code and comments This is 29th 
iteration of typo fixes
      CI: github actions: update OpenSSL to 3.0.1
      CI: refactor spelling check
      CLEANUP: assorted typo fixes in the code and comments
      CI: github actions: clean default step conditions
      CI: github actions: use cache for OpenTracing
      CI: refactor OpenTracing build script
      CI: github actions: use cache for SSL libs

Lukas Tribus (2):
      DOC: config: retry-on list is space-delimited
      DOC: config: fix error-log-format example

Miroslav Zagorac (1):
      BUILD: opentracing: display warning in case of using OT_USE_VARS at 
compile time

Remi Tricot-Le Breton (13):
      BUG/MINOR: vars: Fix the set-var and unset-var converters
      MINOR: vars: Move UPDATEONLY flag test to vars_set_ifexist
      MINOR: vars: Set variable type to ANY upon creation
      MINOR: vars: Delay variable content freeing in var_set function
      MINOR: vars: Parse optional conditions passed to the set-var converter
      MINOR: vars: Parse optional conditions passed to the set-var actions
      MEDIUM: vars: Enable optional conditions to set-var converter and actions
      DOC: vars: Add documentation about the set-var conditions
      REGTESTS: vars: Add new test for conditional set-var
      REGTESTS: vars: Remove useless ssl tunes from conditional set-var test
      MINOR: ssl: Remove empty lines from "show ssl ocsp-response" output
      BUG/MINOR: ssl: Store client SNI in SSL context in case of ClientHello 
error
      REGTESTS: ssl: Fix ssl_errors regtest with OpenSSL 1.0.2

Thierry Fournier (1):
      DOC: fix misspelled keyword "resolve_retries" in resolvers

Tim Duesterhus (3):
      BUG/MEDIUM: sample: Fix memory leak in sample_conv_jwt_member_query
      CI: Consistently use actions/checkout@v2
      REGTESTS: Remove REQUIRE_VERSION=1.8 from all tests

William Dauchy (2):
      MINOR: proxy: add option idle-close-on-response
      BUG/MEDIUM: server: avoid changing healthcheck ctx with set server ssl

William Lallemand (26):
      BUG/MINOR: httpclient: allow to replace the host header
      BUG/MINOR: lua: don't expose internal proxies
      MEDIUM: mworker: seamless reload use the internal sockpairs
      BUG/MINOR: mworker: does not add the -sf in wait mode
      BUG/MEDIUM: mworker: FD leak of the eventpoll in wait mode
      BUG/MINOR: mworker: deinit of thread poller was called when not 
initialized
      BUG/MEDIUM: mworker/cli: crash when trying to access an old PID in prompt 
mode
      MINOR: cli: "show version" displays the current process version
      BUG/MEDIUM: ssl: initialize correctly ssl w/ default-server
      REGTESTS: ssl: fix ssl_default_server.vtc
      BUG/MINOR: ssl: free the fields in srv->ssl_ctx
      BUG/MEDIUM: ssl: free the ckch instance linked to a server
      REGTESTS: ssl: update of a crt with server deletion
      BUG/MINOR: cli: fix _getsocks with musl libc
      BUG/MEDIUM: mworker: don't use _getsocks in wait mode
      BUG/MINOR: httpclient: don't send an empty body
      BUG/MINOR: httpclient: set default Accept and User-Agent headers
      BUG/MINOR: httpclient/lua: don't pop the lua stack when getting headers
      DOC: management: mark "set server ssl" as deprecated
      CLEANUP: mworker: simplify mworker_free_child()
      BUG/MINOR: mworker: fix a FD leak of a sockpair upon a failed reload
      MINOR: mworker: set the master side of ipc_fd in the worker to -1
      MINOR: mworker: allocate and initialize a mworker_proc
      MINOR: mworker: sets used or closed worker FDs to -1
      Revert "MINOR: mworker: sets used or closed worker FDs to -1"
      MINOR: mworker/cli: set expert/experimental mode from the CLI

Willy Tarreau (73):
      BUILD: pools: only detect link-time jemalloc on ELF platforms
      CI: github actions: add the output of $CC -dM -E-
      BUILD: evports: remove a leftover from the dead_fd cleanup
      BUILD: tree-wide: avoid warnings caused by redundant checks of obj_types
      IMPORT: slz: use the correct CRC32 instruction when running in 32-bit mode
      MINOR: pools: work around possibly slow malloc_trim() during gc
      DEBUG: ssl: make sure we never change a servername on established 
connections
      BUG/MEDIUM: backend: fix possible sockaddr leak on redispatch
      BUG/MEDIUM: peers: properly skip conn_cur from incoming messages
      MINOR: compat: detect support for dl_iterate_phdr()
      MINOR: debug: add ability to dump loaded shared libraries
      MINOR: debug: add support for -dL to dump library names at boot
      MINOR: pools: always evict oldest objects first in 
pool_evict_from_local_cache()
      DOC: pool: document the purpose of various structures in the code
      CLEANUP: pools: do not use the extra pointer to link shared elements
      CLEANUP: pools: get rid of the POOL_LINK macro
      MINOR: pool: allocate from the shared cache through the local caches
      CLEANUP: pools: group list updates in pool_get_from_cache()
      MINOR: pool: rely on pool_free_nocache() in pool_put_to_shared_cache()
      MINOR: pool: make pool_is_crowded() always true when no shared pools are 
used
      MINOR: pool: check for pool's fullness outside of 
pool_put_to_shared_cache()
      MINOR: pool: introduce pool_item to represent shared pool items
      MINOR: pool: add a function to estimate how many may be released at once
      MEDIUM: pool: compute the number of evictable entries once per pool
      MINOR: pools: prepare pool_item to support chained clusters
      MINOR: pools: pass the objects count to pool_put_to_shared_cache()
      MEDIUM: pools: centralize cache eviction in a common function
      MEDIUM: pools: start to batch eviction from local caches
      MEDIUM: pools: release cached objects in batches
      OPTIM: pools: reduce local pool cache size to 512kB
      BUILD: makefile: add -Wno-atomic-alignment to work around clang abusive 
warning
      DOC: internals: document the pools architecture and API
      BUG/MEDIUM: connection: properly leave stopping list on error
      MINOR: pools: enable pools with DEBUG_FAIL_ALLOC as well
      MEDIUM: cli: yield between each pipelined command
      MINOR: channel: add new function co_getdelim() to support multiple 
delimiters
      BUG/MINOR: cli: avoid O(bufsize) parsing cost on pipelined commands
      MEDIUM: h2/hpack: emit a Dynamic Table Size Update after settings change
      BUG/MEDIUM: mcli: do not try to parse empty buffers
      BUG/MEDIUM: mcli: always realign wrapping buffers before parsing them
      BUG/MINOR: stream: make the call_rate only count the no-progress calls
      DEBUG: pools: add new build option DEBUG_POOL_INTEGRITY
      MINOR: pools: partially uninline pool_free()
      MINOR: pools: partially uninline pool_alloc()
      MINOR: pools: prepare POOL_EXTRA to be split into multiple extra fields
      MINOR: pools: extend pool_cache API to pass a pointer to a caller
      DEBUG: pools: add new build option DEBUG_POOL_TRACING
      DEBUG: cli: add a new "debug dev fd" expert command
      MINOR: fd: register the write side of the poller pipe as well
      BUILD: debug/cli: condition test of O_ASYNC to its existence
      BUILD: pools: fix build error on DEBUG_POOL_TRACING
      BUILD/DEBUG: lru: update the standalone code to support the revision
      DEBUG: lru: use a xorshift generator in the testing code
      BUG/MAJOR: compiler: relax alignment constraints on certain structures
      BUG/MEDIUM: fd: always align fdtab[] to 64 bytes
      MINOR: sock: move the unused socket cleaning code into its own function
      BUG/MEDIUM: mworker: close unused transferred FDs on load failure
      BUILD: atomic: make the old HA_ATOMIC_LOAD() support const pointers
      BUILD: cpuset: do not use const on the source of CPU_AND/CPU_ASSIGN
      BUILD: checks: fix inlining issue on set_srv_agent_[addr,port}
      BUILD: vars: avoid overlapping field initialization
      BUILD: server-state: avoid using not-so-portable isblank()
      BUILD: mux_fcgi: avoid aliasing of a const struct in traces
      BUILD: tree-wide: mark a few numeric constants as explicitly long long
      BUILD: tools: fix warning about incorrect cast with dladdr1()
      BUILD: task: use list_to_mt_list() instead of casting list to mt_list
      BUILD: mworker: include tools.h for platforms without unsetenv()
      BUILD: makefile: avoid testing all -Wno-* options when not needed
      BUILD: makefile: validate support for extra warnings by batches
      BUILD: makefile: only compute alternative options if required
      DEBUG: fd: make sure we never try to insert/delete an impossible FD number
      MINOR: listener: replace the listener's spinlock with an rwlock
      BUG/MEDIUM: listener: read-lock the listener during accept()

---

Reply via email to