This is an automated email from the ASF dual-hosted git repository.
cmcfarlen pushed a change to branch 10.2.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
from d1cc4e2137 Add unit tests for `Action` logic (#13332)
add 5441adf93b Replace VLA with heap allocation in cachekey appendEncoded
add faf0b456f4 Guard against size_t overflow in appendEncoded buffer sizing
add aa8dea071f Use ts::LocalBuffer instead of std::vector in appendEncoded
add 40eeb5f021 Fix SNI/hostname comparison to check full string length
add 09f15c3960 Close connection if unneccesary H2 SETTINGS frame arrives
add 2d72f26ff2 Reject Transfer-Encoding in HTTP/2 and HTTP/3 headers
add 490dd09540 Reject Transfer-Encoding where chunked is not the final
coding
add d639cb8c40 Fix out-of-bounds write in MIME obs-fold handling
add 81b4fa088d Enforce per-field size limit in HPACK/QPACK string decoding
add af4958fe6b regex_remap: Issue 46 - Overflow in url_len Leads to Stack
Overflow
add 5d86357179 Also address issue #48
add 222d33ceaa Reject oversized HPACK indexes
add eb1a3e94b1 Enforce 16-bit srv_offset invariant in HostDBInfo::assign
add dcfcb1ad29 Document valid range for round_robin_max_count
add f0185e0c43 Replace VLAs with ts::LocalBuffer in HostDB SRV handling
add 68370d9f20 Fix OOB read in H2 get_received_frame_count
add 26ea550118 Add bounds checks to DNS answer parsing before NS_GET macros
add c94a570449 cripts: Issue 31 - UB array write in remap instance
initialization
add 47bcf56e88 cripts: Issue 32 - Fix path traversal in File::Path::Rebase
add 229f0b4cbb Fix integer overflow in MIME header parsing
add 3622d3d0be Fix inverted condition for nonstandard method matching in
ACL filtering
add 0a9b3a3dd5 Bound status code parsing to prevent integer overflow
add 7f5d62bf15 Avoid stack VLA in log filter wiping
add ed3db2677a Avoid stack VLA in proxy protocol parsing
add 5e87e83f3a Validate PROXY v1 port bounds
add 87f5053c66 Guard txn_box stack allocations
add d6edf3529f Limit CONNECT body preclusion to successful responses
add a14f75bfa4 libswoc: Validate IPv6 hextet bounds
add ffdad865ef Reject overflowing XPACK integers
add 77c507ad55 Bound outstanding HTTP/2 SETTINGS
add 523df9a2ec Fix inverted condition in SNI_IpAllow::TestClientSNIAction
add 4eccff0ac9 Fix max_settings_per_minute condition
add 18d6570c7a Update autest for SNI_IpAllow::TestClientSNIAction #188
changes
add 93657ab769 http2: Add tests for CRLF rejection in H2 header values
add c17b724772 Fix format issue in http2_crlf_header_validation
add 807b037e06 rate_limit: Issue 106 - Fix queue bypass
add 932b5fa100 rate_limit: Issue 108 - Fix ip-rep UB writes
add e39e178b50 compress: stop gzip transform after deflate() error
add 752fea85b1 Fix leaks of POST failures
add fb45f2f898 Add nullptr check before calling SSL_shutdown
add e6f8b84551 Fix length check of MethodMod:check
add c181b39fd4 iocore: tighten IOBuffer and AIO bounds checks
add 9a65757e49 stream_editor: allocate rules in contdata_t ctor
add 2838fec6d3 tscpp: hold intercept try-lock guard via shared mutex
add 39bb899911 URL: reject parsed ports outside uint16 range
add a75f04a8f6 access_control: cap stack buffer for cookie base64 decode
add 10e7d116f3 rate_limit: Fix active counter underflow
add 23297265ae Constrain prefetch relative paths
add b542a27ba9 Server Session: Make sure read_buffer is empty before
pooling a server session
add 21b786a1ec Keep OCSP map on init failure
add 664666e94d Return evacuation bucket by reference not by value
add 94f2069783 Handle addressless PROXY headers in TLS
add b706c00ca3 Guard outbound server_name SNI policy
add 329d3546df Verify H2 origin certs on session reuse
add bd6a40312b TLSSNISupport: own outbound_sni_policy bytes across config
reload
add 7e85ad3f8d Avoid signed tolower for name bytes
add 61a02258a6 Reject oversized multiplexer chunks
add 8605e6553a Keep loop detection on outbound-transparent ports
add 9d99f4f654 Set default value of
proxy.config.http2.default_buffer_water_mark to 32KB
add e6e7135d25 Avoid UB when URL part is absent in URLImpl getters
add b73cf9d3bb HTTPHdr: fix use-after-free in destroy() leaving dangling
m_http
add c80606f222 ESI: cap HTTP request length to prevent size_t overflow
add b485b59d97 Invoke Continuation operator bool, not pointer-to-bool
add 252466fb88 Prevent unbounded recursion in host-down Range fallback
add 9bf1fa52c3 Add uds-perm/uds-user/uds-group port options
add 6cf8175967 Fix ChunkHandler Flow Control
add de964687af Fix FetchSM header block copying
add 7785b7a4da Gate H2 reads during async hooks
add 4b7b907b73 background_fetch: fix inverted size operator and broken
value wildcard
add 950c078bd4 Fix an integer overflow in HdrHeap
add e66d2572b2 lua: Add checks on server request hdr
add 96dc167c15 Regex: add RE_FULL_MATCH flag, fix SNI partial-match policy
bypass
add d2c64e7bee Combo handler: Reject empty Content-Type when allowlist is
configured
add 95d9db9453 ESI: bound for nested esi html comment
add 75412e09f6 ja3_fingerprint: tighten encode_word_buffer bounds
add db35e842a1 Use ParseRules::is_digit on raw network bytes in HTTP parser
add c6d02f5a97 header_rewrite: Copy set-body-from response body with memcpy
add 948e9fe463 Cap stale_response SIE buffering
add 159ce649b2 Guard parent mark-down on UNAVAILABLE_SERVER retry
add a6dbdb9fbc xdebug: Cap X-Remap header length to actual buffer content
add 90e0b06073 DNS: fix TCP length-prefix read under edge-triggered epoll
add 6dcf044fcc Add admin-guide reference for writing secure regex rules
add 0d7b210df5 combo_handler.test.py: Fix empty type test output
add 63d5c95765 test_proxy: Fix macOS link duplicates after FetchSM test
was added
add c420e013f8 Fixes HRW bridge issues, adds autests to Cripts
add 4c72a98d5a cripts: Fix undersized sockaddr in Geo IP lookup
add bb2ffba6dd cripts: fix use-after-free in TSRemapDoRemap
add a4a83197e1 cripts: Fix abort on duplicate query keys
add e076e7dfa1 header_rewrite: Fix cookie key over-read
add c248c81663 doc: cover uri_signing cdniuc uri-regex in regex best
practices
add c12aa9160d Preserve dynamic-port flag across tunnel_route mapping ops
add 25c665a74b HttpTunnel: Guard get_producer(VIO*) against dead producers
add c6ac6d6244 ts_lua: clear rri pointer in http_ctx after remap returns
add b110f78f9b ts_lua: use sockaddr_storage for ts_lua_fetch client address
add 43f78d0e34 header_rewrite: Guard SESSION/STATE access on null handle
add 1256e746cf cripts: Fix global Client::URL MLoc leak
add b70fbca639 cripts: Fix Bundle::Headers server-side header removal
add ae09135224 slice: Check for Integer underflow in firstblockbytes
add ad40f2853a ParentSelection: increase size of mapWrapped array for
compat with strategies
add 2c28d2c488 lua: Invalidate cached main_ctx when slot is outside
instance's range
add 52e6b46d93 DNS: Run HostEnt destructor on free to release SRV vector
heap
add c185e559c9 HttpSM: Stop tracking the fire-and-forget cache-delete
Action
add c1aebba911 lua: Free transform context when client-hook VConn closes
add 00b1a11e2f NextHopRoundRobin: update ring size for wrapping when
switching rings
add 41cd074cff certifier: Reject unsafe SNI names
add b7fdf9975a Drop H2 origin trailers for H1 clients
add ed25aaed94 http2: Reject CONTINUATION accumulation that overflows
header_blocks_length
add 62497ae3c1 Honor number_of_redirections for plugin-initiated redirects
add f26b1219eb cache_range_requests: use std::string spill buffer for
building override cachekey
add 1b98b1fc2d Reject header fields exceeding the uint16 field-length limit
add 74ccaa28f4 webp_transform: bound buffered body and ImageMagick decode
add 3c44efd804 header_rewrite: Fix IPv6 CIDR masking for non-aligned
prefixes
add 89d543adcd Implement SSRF validation for ESI include URLs
add aac5c3b7e9 SSLNetVConnection: deregister async handshake eventfd on
connection teardown
add a69e886eec Strip Connection-listed headers per RFC 9110 ยง7.6.1
add ceacc9baf7 Test H2 control-character rejection
add 5d215fc749 http2: Defer HPACK dynamic-table updates until encoding
succeeds
add a1d35f9fb6 authproxy: Don't assert on auth response with no header
fields
add 9500f6b705 mgmt/rpc: create JSONRPC unix socket with intended mode
atomically
add 230ae9fd66 cache: Move openReadStartEarliest recursion counter off
CacheVC to fix UAF
add e27b7ef0f8 Bound host header buffer
add b9f36ca3f8 uri_signing: replace stack arrays with LocalBuffer
add 946e241032 http: reject chunked extension quoted-string values
containing CR or LF
add d57b23d493 ip_allow: add default CONNECT destination rules
add be5a335b2d Guard against missing delimiter in url_sig C= parameter
add 51c5b0fb4e master: Strip external @ headers before plugin hooks
add 85f90ebb79 Fix: cancel stale TLS accept timeouts so session acceptors
don't abort
add 67ded938ac regex_map: anchor host matching to the full hostname
add be70ba8311 Invalidate dns_info.addr when claiming resolved without DNS
add f322409710 PendingAction: Don't let CAS failure overwrite the caller's
action
add f684c07272 parent_selection: Cap retries to one per window via
failedAt CAS
add 37985fb4c0 compress: Wrap isspace so obs-text Content-Type bytes don't
trigger UB
add 076024a1f2 Expand URI normalization test coverage for userinfo handling
add 2303f89e8a Guard remap against shutdown table teardown
add 27a42ae487 Revert "Guard remap against shutdown table teardown"
add 9127101a2f Guard remap against shutdown table teardown
add ae5e6dad2a http: reject a bare LF chunked trailer terminator under
strict parsing
add 25cfec9873 Combo handler: Refactor Cache-Control parsing and update
gold test
add 40ef716d40 Fix null-deref in error_log_connection_failure for a DOWN
host
add d5adeb3fcf Fix tls_engine_abort autest referencing removed
async_engine plugin
add 91b7e49336 Fix header_rewrite_bundle cookie rules matching the wrong
path
add 3563e4c2d0 http: drain request body on internally generated cache
responses
add 3e05a64806 Fix chunked passthrough flow-control deadlock
(drop_chunked_trailers=0)
add 2bed75447e webp_transform: fix decode_limit test to send a matching
signature
add 338f3ab524 Regex: preserve RE_ENDANCHORED semantics on PCRE2 < 10.30
add 4c0fd8023e esi: drop tsutil from esicore link deps to avoid plugin ODR
add 90700df5e2 esi: add <sys/socket.h> for AF_INET/AF_INET6 in
IncludeUrlValidator
add 6b041958c0 esi: guard optarg null before setHostAllowRegex to satisfy
clang analyzer
add 7a898ed9a3 connect_destination_acl: accept curl exit 7 for a refused
CONNECT
add f1cbde3500 Fix race in remap table refcount during reload
No new revisions were added by this update.
Summary of changes:
configs/ip_allow.yaml.default | 28 +-
doc/admin-guide/configuration/index.en.rst | 1 +
.../configuration/regex-best-practices.en.rst | 423 +++++++++++++++++
doc/admin-guide/files/cache.config.en.rst | 12 +-
doc/admin-guide/files/ip_allow.yaml.en.rst | 64 ++-
doc/admin-guide/files/parent.config.en.rst | 8 +-
doc/admin-guide/files/records.yaml.en.rst | 67 ++-
doc/admin-guide/files/remap.config.en.rst | 14 +
doc/admin-guide/files/sni.yaml.en.rst | 10 +
doc/admin-guide/files/splitdns.config.en.rst | 9 +-
doc/admin-guide/layer-4-routing.en.rst | 9 +
doc/admin-guide/plugins/esi.en.rst | 35 ++
doc/admin-guide/plugins/geoip_acl.en.rst | 7 +
doc/admin-guide/plugins/maxmind_acl.en.rst | 8 +-
doc/admin-guide/plugins/uri_signing.en.rst | 23 +-
doc/admin-guide/plugins/url_sig.en.rst | 8 +
doc/admin-guide/plugins/webp_transform.en.rst | 45 +-
.../api/functions/TSMimeHdrFieldCreate.en.rst | 6 +
.../api/functions/TSMimeHdrFieldNameSet.en.rst | 11 +
.../functions/TSMimeHdrFieldValueStringSet.en.rst | 4 +
.../cripts/cripts-connections.en.rst | 2 +-
doc/developer-guide/cripts/cripts-headers.en.rst | 7 +
.../plugins/http-headers/mime-headers.en.rst | 20 +
include/cripts/Bundles/Headers.hpp | 10 +-
include/cripts/Connections.hpp | 6 +-
include/cripts/Epilogue.hpp | 10 +-
include/cripts/Urls.hpp | 19 +-
include/iocore/eventsystem/IOBuffer.h | 9 +-
include/iocore/net/AcceptOptions.h | 6 +
include/iocore/net/NetVConnection.h | 22 +-
include/iocore/net/TLSSNISupport.h | 23 +-
include/proxy/ControlBase.h | 1 +
include/proxy/ParentSelection.h | 36 +-
include/proxy/ProxySession.h | 7 +
include/proxy/ProxyTransaction.h | 4 +
include/proxy/ReverseProxy.h | 12 +-
include/proxy/hdrs/HTTP.h | 47 +-
include/proxy/hdrs/MIME.h | 34 +-
include/proxy/hdrs/XPACK.h | 2 +-
include/proxy/http/HttpConfig.h | 3 +
include/proxy/http/HttpSM.h | 10 +-
include/proxy/http/HttpSessionManager.h | 5 +-
include/proxy/http/HttpTransact.h | 65 +--
include/proxy/http/HttpTunnel.h | 54 ++-
include/proxy/http/remap/UrlRewrite.h | 25 +-
include/proxy/http2/HPACK.h | 12 +-
include/proxy/http2/HTTP2.h | 14 +-
include/proxy/http2/Http2ConnectionState.h | 64 ++-
include/proxy/http2/Http2Stream.h | 14 +-
include/proxy/http3/QPACK.h | 4 +-
include/records/RecHttp.h | 8 +
include/tscore/PendingAction.h | 8 +-
include/tscore/X509HostnameValidator.h | 5 +-
include/tsutil/AtomicSharedPtr.h | 84 ++++
include/tsutil/Convert.h | 7 +-
include/tsutil/Regex.h | 8 +-
lib/swoc/src/swoc_ip.cc | 5 +-
lib/swoc/unit_tests/test_ip.cc | 5 +
plugins/authproxy/authproxy.cc | 1 -
plugins/background_fetch/configs.cc | 6 +-
plugins/background_fetch/rules.cc | 8 +-
.../cache_range_requests/cache_range_requests.cc | 57 ++-
plugins/cachekey/cachekey.cc | 12 +-
plugins/certifier/certifier.cc | 47 +-
plugins/compress/configuration.cc | 18 +-
plugins/compress/gzip_compress.cc | 3 +-
plugins/esi/CMakeLists.txt | 2 +-
plugins/esi/combo_handler.cc | 44 +-
plugins/esi/combo_handler_utils.cc | 141 ++++++
.../esi/combo_handler_utils.h | 29 +-
plugins/esi/esi.cc | 103 ++++-
plugins/esi/fetcher/HttpDataFetcherImpl.cc | 18 +-
plugins/esi/lib/CMakeLists.txt | 9 +
plugins/esi/lib/EsiProcessor.cc | 105 ++++-
plugins/esi/lib/EsiProcessor.h | 14 +-
plugins/esi/lib/IncludeUrlValidator.cc | 441 ++++++++++++++++++
plugins/esi/lib/IncludeUrlValidator.h | 86 ++++
plugins/esi/test/CMakeLists.txt | 20 +-
plugins/esi/test/combo_handler_utils_test.cc | 197 ++++++++
plugins/esi/test/include_url_validator_test.cc | 206 +++++++++
plugins/experimental/access_control/plugin.cc | 22 +-
plugins/experimental/jax_fingerprint/ja3/test.cc | 55 +++
plugins/experimental/jax_fingerprint/ja3/utils.cc | 12 +-
plugins/experimental/rate_limit/ip_reputation.cc | 4 +-
plugins/experimental/rate_limit/sni_selector.cc | 6 +-
plugins/experimental/rate_limit/txn_limiter.cc | 2 +-
plugins/experimental/stale_response/BodyData.h | 4 +
.../experimental/stale_response/ServerIntercept.cc | 1 +
.../experimental/stale_response/stale_response.cc | 202 +++++++-
.../experimental/stale_response/stale_response.h | 2 +
.../experimental/stream_editor/stream_editor.cc | 2 +-
.../experimental/txn_box/plugin/src/Modifier.cc | 11 +-
plugins/experimental/txn_box/plugin/src/ts_util.cc | 20 +-
plugins/experimental/uri_signing/normalize.cc | 50 +-
.../uri_signing/unit_tests/uri_signing_test.cc | 216 +++++++--
plugins/experimental/url_sig/url_sig.cc | 8 +
plugins/header_rewrite/cidr.h | 68 +++
plugins/header_rewrite/conditions.cc | 16 +-
plugins/header_rewrite/conditions.h | 2 +-
plugins/header_rewrite/header_rewrite_test.cc | 86 +++-
plugins/header_rewrite/operators.cc | 24 +-
plugins/header_rewrite/statement.h | 9 +-
plugins/ja3_fingerprint/ja3_fingerprint.cc | 4 +-
plugins/ja3_fingerprint/ja3_utils.cc | 12 +-
plugins/ja3_fingerprint/test_utils.cc | 55 +++
plugins/lua/ts_lua.cc | 18 +-
plugins/lua/ts_lua_common.h | 1 +
plugins/lua/ts_lua_fetch.cc | 33 +-
plugins/lua/ts_lua_server_request.cc | 4 +
plugins/lua/ts_lua_transform.cc | 5 +
plugins/lua/ts_lua_util.cc | 4 +-
plugins/multiplexer/CMakeLists.txt | 7 +
plugins/multiplexer/chunk-decoder.cc | 81 +++-
plugins/multiplexer/chunk-decoder.h | 16 +-
plugins/multiplexer/fetcher.h | 35 +-
.../multiplexer/unit_tests/test_chunk_decoder.cc | 155 +++++++
plugins/prefetch/CMakeLists.txt | 1 +
plugins/prefetch/fetch.cc | 15 +-
plugins/prefetch/fetch.h | 4 +-
plugins/prefetch/path.cc | 190 ++++++++
plugins/prefetch/path.h | 63 +++
plugins/prefetch/plugin.cc | 45 +-
plugins/prefetch/test/CMakeLists.txt | 4 +
plugins/prefetch/test/test_path.cc | 67 +++
plugins/regex_remap/regex_remap.cc | 38 +-
plugins/slice/server.cc | 23 +-
plugins/webp_transform/ImageTransform.cc | 313 +++++++++++--
plugins/xdebug/xdebug.cc | 9 +-
src/api/InkAPI.cc | 33 +-
src/cripts/Bundles/HRWBridge.cc | 85 ++--
src/cripts/Bundles/Headers.cc | 16 +-
src/cripts/Connections.cc | 7 +-
src/cripts/Context.cc | 6 +-
src/cripts/Files.cc | 11 +-
src/cripts/Geo.cc | 2 +-
src/cripts/Instance.cc | 2 +-
src/cripts/Urls.cc | 25 +-
src/iocore/aio/AIO.cc | 3 +-
src/iocore/cache/CacheRead.cc | 31 +-
src/iocore/cache/CacheVC.h | 1 -
src/iocore/cache/StripeSM.h | 4 +-
src/iocore/cache/unit_tests/test_Stripe.cc | 30 ++
src/iocore/dns/CMakeLists.txt | 6 +-
src/iocore/dns/DNS.cc | 72 +--
src/iocore/{net/UDPIOEvent.cc => dns/HostEnt.cc} | 12 +-
src/iocore/dns/P_DNSConnection.h | 16 +-
.../iocore/dns/unit_tests}/CMakeLists.txt | 30 +-
src/iocore/dns/unit_tests/test_HostEnt.cc | 102 +++++
src/iocore/eventsystem/IOBuffer.cc | 14 +-
src/iocore/eventsystem/unit_tests/test_IOBuffer.cc | 90 ++++
src/iocore/hostdb/HostDB.cc | 9 +-
src/iocore/hostdb/HostDBInfo.cc | 4 +-
src/iocore/net/CMakeLists.txt | 12 +-
src/iocore/net/NetVConnection.cc | 15 +-
src/iocore/net/P_SSLClientUtils.h | 6 +-
src/iocore/net/P_SSLNetVConnection.h | 2 +
src/iocore/net/ProxyProtocol.cc | 38 +-
src/iocore/net/SNIActionPerformer.cc | 19 +-
src/iocore/net/SSLClientUtils.cc | 67 ++-
src/iocore/net/SSLNetVConnection.cc | 52 ++-
src/iocore/net/SSLNextProtocolAccept.cc | 2 +
src/iocore/net/SSLSNIConfig.cc | 7 +-
src/iocore/net/Server.cc | 7 +-
src/iocore/net/unit_tests/sni_conf_test.yaml | 8 +
src/iocore/net/unit_tests/test_OCSPStapling.cc | 105 +++++
src/iocore/net/unit_tests/test_ProxyProtocol.cc | 24 +
.../net/unit_tests/test_SSLCertLookup.cc} | 52 +--
.../unit_tests/test_SSLNetVConnectionAsyncEp.cc | 132 ++++++
src/iocore/net/unit_tests/test_SSLSNIConfig.cc | 134 ++++++
src/iocore/net/unit_tests/test_YamlSNIConfig.cc | 2 +-
src/mgmt/rpc/server/IPCSocketServer.cc | 29 +-
src/mgmt/rpc/server/unit_tests/test_rpcserver.cc | 40 ++
src/proxy/ControlBase.cc | 5 +-
src/proxy/FetchSM.cc | 42 +-
src/proxy/ParentConsistentHash.cc | 13 +-
src/proxy/ParentRoundRobin.cc | 18 +-
src/proxy/ProxyTransaction.cc | 6 +
src/proxy/ReverseProxy.cc | 76 ++-
src/proxy/hdrs/HTTP.cc | 54 ++-
src/proxy/hdrs/HdrHeap.cc | 14 +-
src/proxy/hdrs/HeaderValidator.cc | 3 +-
src/proxy/hdrs/MIME.cc | 268 +++++------
src/proxy/hdrs/URL.cc | 42 +-
src/proxy/hdrs/XPACK.cc | 17 +-
src/proxy/hdrs/unit_tests/test_HdrHeap.cc | 44 ++
src/proxy/hdrs/unit_tests/test_Hdrs.cc | 275 +++++++++--
src/proxy/hdrs/unit_tests/test_HeaderValidator.cc | 13 +
src/proxy/hdrs/unit_tests/test_URL.cc | 142 ++++++
src/proxy/hdrs/unit_tests/test_XPACK.cc | 105 ++++-
src/proxy/hdrs/unit_tests/test_mime.cc | 373 +++++++++++++++
src/proxy/http/ConnectingEntry.cc | 25 +-
src/proxy/http/Http1ClientSession.cc | 7 +
src/proxy/http/HttpConfig.cc | 52 ++-
src/proxy/http/HttpProxyServerMain.cc | 3 +
src/proxy/http/HttpSM.cc | 155 +++++--
src/proxy/http/HttpSessionAccept.cc | 6 +-
src/proxy/http/HttpSessionManager.cc | 50 +-
src/proxy/http/HttpTransact.cc | 192 +++++++-
src/proxy/http/HttpTransactHeaders.cc | 28 ++
src/proxy/http/HttpTunnel.cc | 276 +++++++++--
src/proxy/http/remap/NextHopConsistentHash.cc | 6 +-
src/proxy/http/remap/NextHopRoundRobin.cc | 18 +-
src/proxy/http/remap/RemapConfig.cc | 9 +-
src/proxy/http/remap/RemapProcessor.cc | 16 +-
src/proxy/http/remap/UrlRewrite.cc | 6 +-
src/proxy/http/unit_tests/CMakeLists.txt | 2 +
src/proxy/http/unit_tests/test_ChunkedHandler.cc | 510 +++++++++++++++++++++
src/proxy/http/unit_tests/test_HttpTransact.cc | 226 +++++++++
.../http/unit_tests/test_HttpTransactHeaders.cc | 352 ++++++++++++++
src/proxy/http2/HPACK.cc | 51 ++-
src/proxy/http2/HTTP2.cc | 5 +-
src/proxy/http2/Http2ClientSession.cc | 17 +-
src/proxy/http2/Http2ConnectionState.cc | 196 ++++++--
src/proxy/http2/Http2ServerSession.cc | 17 +-
src/proxy/http2/Http2SessionAccept.cc | 9 +-
src/proxy/http2/Http2Stream.cc | 56 ++-
src/proxy/http2/test_HPACK.cc | 9 +-
src/proxy/http2/unit_tests/test_HTTP2.cc | 151 ++++++
.../http2/unit_tests/test_HpackIndexingTable.cc | 271 ++++++++++-
src/proxy/http3/Http3Session.cc | 19 +-
src/proxy/http3/QPACK.cc | 20 +-
src/proxy/http3/test/test_QPACK.cc | 7 +-
src/proxy/logging/LogFilter.cc | 45 +-
src/proxy/unit_tests/CMakeLists.txt | 4 +-
src/proxy/unit_tests/stub.cc | 12 +-
src/proxy/unit_tests/test_ControlBase.cc | 99 ++++
src/proxy/unit_tests/test_FetchSM.cc | 93 ++++
src/records/RecHttp.cc | 62 +++
src/records/RecordsConfig.cc | 6 +-
src/traffic_cache_tool/CacheScan.cc | 8 +-
src/traffic_server/traffic_server.cc | 3 +
src/tscore/CMakeLists.txt | 1 +
src/tscore/X509HostnameValidator.cc | 16 +-
src/tscore/unit_tests/test_PendingAction.cc | 91 ++++
.../unit_tests/test_X509HostnameValidator.cc | 32 +-
src/tscpp/api/InterceptPlugin.cc | 21 +-
src/tscpp/api/TransformationPlugin.cc | 2 +-
src/tsutil/Regex.cc | 74 ++-
src/tsutil/unit_tests/test_Regex.cc | 112 +++++
tests/CMakeLists.txt | 1 +
tests/fuzzing/fuzz_hpack.cc | 4 +-
.../at_headers.test.py} | 9 +-
.../gold_tests/at_headers}/plugins/CMakeLists.txt | 2 +-
.../at_headers/plugins/at_header_probe.cc | 220 +++++++++
.../at_headers/replay/at_headers.replay.yaml | 161 +++++++
tests/gold_tests/autest-site/ats_replay.test.ext | 62 ++-
tests/gold_tests/autest-site/min_cfg/ip_allow.yaml | 20 +
.../gold_tests/autest-site/trafficserver.test.ext | 41 ++
.../cache/cache_corrupt_recursive_uaf.test.py | 127 +++++
.../cache/host_down_range_recursion.test.py | 81 ++++
.../host_down_range_recursion_prime.replay.yaml} | 31 +-
.../host_down_range_recursion_range.replay.yaml | 52 +++
.../chunked_encoding/chunk_extension_client.py | 106 +++++
.../chunk_extension_quoted_string.test.py | 84 ++++
.../chunked_encoding/chunk_trailer_bare_lf.test.py | 86 ++++
.../chunked_encoding/chunk_trailer_client.py | 104 +++++
.../chunked_flow_control.test.py} | 8 +-
.../chunked_not_last.test.py} | 8 +-
.../chunk_extension_quoted_string.replay.yaml} | 43 +-
.../replays/chunk_trailer_bare_lf.replay.yaml} | 44 +-
.../replays/chunked_h1_flow_control.replay.yaml | 138 ++++++
.../replays/chunked_h2_flow_control.replay.yaml | 148 ++++++
.../replays/chunked_not_last.replay.yaml | 206 +++++++++
.../chunked_passthru_flow_control.replay.yaml | 161 +++++++
tests/gold_tests/connect/connect.test.py | 3 +
.../connect/connect_parent_error_body.test.py | 72 +++
.../connect/h2_malformed_request_logging.test.py | 1 +
.../connect/malformed_h2_request_client.py | 63 ++-
.../replays/connect_parent_error_body.replay.yaml | 115 +++++
tests/gold_tests/cripts/cripts_bundle.replay.yaml | 325 +++++++++++++
tests/gold_tests/cripts/cripts_bundle.test.py | 49 ++
tests/gold_tests/cripts/files/bundle_headers.cript | 60 +++
tests/gold_tests/cripts/files/direct_headers.cript | 65 +++
.../cripts/files/server_bundle_headers.cript | 45 ++
.../clients/h2_max_settings_per_minute.py} | 83 +---
.../gold_tests/h2/clients/h2_settings_ack_stall.py | 184 ++++++++
tests/gold_tests/h2/h1_trailer_client.py | 86 ++++
.../gold_tests/h2/h2_origin_cert_reverify.test.py | 72 +++
.../h2_origin_trailers_h1.replay.yaml} | 34 +-
tests/gold_tests/h2/h2_origin_trailers_h1.test.py | 88 ++++
tests/gold_tests/h2/http2.test.py | 24 +
.../h2/http2_crlf_header_validation.test.py | 91 ++++
tests/gold_tests/h2/http2_flow_control.test.py | 42 ++
.../h2/http2_txn_start_read_gate.test.py | 57 +++
.../replay/http2_settings_ack_stall.replay.yaml} | 44 +-
.../http2_txn_start_read_gate.replay.yaml} | 49 +-
...ue.yaml => replay_h2_origin_cert_reverify.yaml} | 42 +-
.../headers/clients/oversized_field_h2_client.py | 151 ++++++
.../gold_tests/headers/hopbyhop_connection.test.py | 16 +-
.../oversized_field.test.py} | 15 +-
.../gold_tests/headers/oversized_field_h2.test.py | 136 ++++++
.../headers/replay/oversized_field.replay.yaml | 90 ++++
.../replay/oversized_field_h2.replay.yaml} | 74 ++-
...replay.yaml => hopbyhop_connection.replay.yaml} | 108 +++--
.../ip_allow/connect_destination_acl.test.py | 168 +++++++
.../strategies_ch5.test.py} | 142 +++---
.../gold_tests/next_hop/strategies_ch5/trace.gold | 192 ++++++++
.../per_server_connection_max.test.py | 1 +
.../parent_retry_non_retryable_post.test.py} | 12 +-
.../parent_retry_non_retryable_post.replay.yaml | 90 ++++
.../delete_maxforwards_body_desync.test.py | 89 ++++
.../pipeline/delete_maxfwd_noop_drain.test.py | 89 ++++
tests/gold_tests/pipeline/desync_client.py | 112 +++++
tests/gold_tests/pipeline/desync_client_miss.py | 45 ++
tests/gold_tests/pipeline/desync_server.py | 97 ++++
tests/gold_tests/pipeline/noop_keepalive.test.py | 92 ++++
tests/gold_tests/pipeline/noop_keepalive_client.py | 57 +++
.../cache_range_requests.test.py | 36 ++
.../pluginTest/certifier/certifier.test.py | 107 +++++
...{https.replay.yaml => https-no-sni.replay.yaml} | 4 +-
...eplay.yaml => https-path-traversal.replay.yaml} | 6 +-
.../pluginTest/combo_handler/combo_handler.test.py | 53 ++-
.../{tr2.gold => cache_control_aggregation.gold} | 7 +-
.../{tr2.gold => max_age_zero.gold} | 7 +-
.../combo_handler_files/{tr1.gold => tr3.gold} | 0
.../compress-content-type-params.replay.yaml | 28 ++
.../esi/esi_nested_html_comment.replay.yaml} | 36 +-
.../pluginTest/esi/esi_nested_html_comment.test.py | 156 +++++++
.../esi_nested_html_comment_reject.replay.yaml} | 38 +-
.../pluginTest/esi/esi_request_size_cap.test.py | 91 ++++
.../pluginTest/esi/esi_ssrf_validate.replay.yaml | 164 +++++++
.../pluginTest/esi/esi_ssrf_validate.test.py | 111 +++++
.../header_rewrite_bundle.replay.yaml | 380 ++++++++++++++-
.../header_rewrite_set_body_from.test.py | 44 ++
.../rules/{rule_empty_body.conf => rule_cidr.conf} | 11 +-
.../header_rewrite/rules/rule_cookie.conf | 68 +++
.../header_rewrite/rules/rule_session_vars.conf | 39 +-
.../rules/rule_set_body_from_remap.conf | 4 +
.../pluginTest/lua/fetch_ipv6_cliaddr.lua | 37 +-
...hook.test.py => lua_fetch_ipv6_cliaddr.test.py} | 42 +-
.../pluginTest/lua/lua_remap_after_hook.test.py | 55 +++
.../gold_tests/pluginTest/lua/remap_after_hook.lua | 23 +-
.../pluginTest/multiplexer/multiplexer.test.py | 81 ++++
.../multiplexer_invalid_chunk_copy.replay.yaml} | 28 +-
...multiplexer_invalid_chunk_original.replay.yaml} | 37 +-
.../prefetch_query_path_traversal.replay.yaml | 165 +++++++
.../prefetch_query_path_traversal.test.py} | 8 +-
.../pluginTest/rate_limit/concurrent_reject.sh | 28 +-
.../pluginTest/rate_limit/independent_limiters.sh | 29 +-
.../rate_limit/queue_bypass_regression.sh | 77 ++++
.../pluginTest/rate_limit/queue_drain.sh | 44 ++
.../pluginTest/rate_limit/rate_limit.test.py | 132 ++++++
.../pluginTest/rate_limit/rate_limit_iprep.test.py | 114 +++++
.../pluginTest/rate_limit/rate_limit_sni.test.py | 115 +++++
.../pluginTest/rate_limit/retry_after.sh | 26 +-
.../pluginTest/rate_limit/sequential_pass.sh | 27 +-
.../redirect_limit/redirect_limit.test.py | 134 ++++++
tests/gold_tests/pluginTest/slice/shrink_origin.py | 134 ++++++
.../pluginTest/slice/slice_content_shrink.test.py | 94 ++++
.../stale_response/stale_response.test.py | 18 +
....yaml => stale_response_max_memory.replay.yaml} | 51 ++-
.../pluginTest/traffic_dump/traffic_dump.test.py | 1 +
.../pluginTest/tsapi/test_TSHttpSsnInfo.cc | 7 +
.../pluginTest/tsapi/test_TSHttpSsnInfo.test.py | 2 +
tests/gold_tests/pluginTest/url_sig/url_sig.gold | 3 +
.../gold_tests/pluginTest/url_sig/url_sig.test.py | 30 ++
.../replay/webp_chunked_cap.replay.yaml} | 32 +-
.../webp_transform_cache_refused.test.py | 90 ++++
.../webp_transform_chunked_cap.test.py | 74 +++
.../webp_transform_decode_limit.test.py | 117 +++++
.../webp_transform_max_buffer_size.test.py | 108 +++++
.../webp_transform/webp_transform_size_cap.test.py | 115 +++++
.../x_remap_long_url/x_remap_long_url.replay.yaml} | 80 +---
.../x_remap_long_url/x_remap_long_url.test.py} | 20 +-
.../proxy_protocol/proxy_protocol.test.py | 1 +
tests/gold_tests/remap/regex_map_anchor.test.py | 35 ++
.../remap/replay/regex_map_anchor.replay.yaml | 204 +++++++++
.../timeout/tunnel_active_timeout.test.py | 1 +
tests/gold_tests/tls/gold/tls-tunnel-metrics.gold | 6 +-
.../tls/proxy_protocol_addressless.test.py | 81 ++++
tests/gold_tests/tls/proxy_protocol_client.py | 31 +-
.../outbound_sni_server_name_plain.replay.yaml | 79 ++++
.../tls_accept_timeout_crash.replay.yaml} | 32 +-
.../tls/tls_accept_timeout_crash.test.py | 75 +++
tests/gold_tests/tls/tls_engine_abort.py | 64 +++
tests/gold_tests/tls/tls_engine_abort.test.py | 113 +++++
tests/gold_tests/tls/tls_forward_nonhttp.test.py | 1 +
.../tls/tls_outbound_sni_server_name_plain.test.py | 25 +
.../tls/tls_partial_blind_tunnel.test.py | 1 +
tests/gold_tests/tls/tls_sni_host_policy.test.py | 99 ++++
tests/gold_tests/tls/tls_sni_ip_allow.test.py | 1 +
tests/gold_tests/tls/tls_sni_with_port.test.py | 1 +
tests/gold_tests/tls/tls_tunnel.test.py | 20 +
tests/gold_tests/tls/tls_tunnel_forward.test.py | 1 +
tests/gold_tests/tunnel/tunnel_transform.test.py | 2 +
tests/gold_tests/tunnel/txn_type.test.py | 2 +
tests/gold_tests/uds/uds_socket_perm.test.py | 57 +++
tests/tools/plugins/CMakeLists.txt | 2 +
tests/tools/plugins/async_handshake.cc | 20 +-
tests/tools/plugins/delay_txn_start.cc | 122 +++++
tests/tools/plugins/hook_add_plugin.cc | 24 +-
tests/tools/plugins/redirect_rearm.cc | 112 +++++
392 files changed, 19404 insertions(+), 2175 deletions(-)
create mode 100644 doc/admin-guide/configuration/regex-best-practices.en.rst
create mode 100644 include/tsutil/AtomicSharedPtr.h
create mode 100644 plugins/esi/combo_handler_utils.cc
copy src/tsutil/unit_tests/test_Strerror.cc =>
plugins/esi/combo_handler_utils.h (56%)
create mode 100644 plugins/esi/lib/IncludeUrlValidator.cc
create mode 100644 plugins/esi/lib/IncludeUrlValidator.h
create mode 100644 plugins/esi/test/combo_handler_utils_test.cc
create mode 100644 plugins/esi/test/include_url_validator_test.cc
create mode 100644 plugins/header_rewrite/cidr.h
create mode 100644 plugins/multiplexer/unit_tests/test_chunk_decoder.cc
create mode 100644 plugins/prefetch/path.cc
create mode 100644 plugins/prefetch/path.h
create mode 100644 plugins/prefetch/test/test_path.cc
copy src/iocore/{net/UDPIOEvent.cc => dns/HostEnt.cc} (81%)
copy {plugins/experimental/access_control =>
src/iocore/dns/unit_tests}/CMakeLists.txt (61%)
create mode 100644 src/iocore/dns/unit_tests/test_HostEnt.cc
create mode 100644 src/iocore/net/unit_tests/test_OCSPStapling.cc
copy src/{tscore/unit_tests/test_List.cc =>
iocore/net/unit_tests/test_SSLCertLookup.cc} (52%)
create mode 100644 src/iocore/net/unit_tests/test_SSLNetVConnectionAsyncEp.cc
create mode 100644 src/proxy/http/unit_tests/test_ChunkedHandler.cc
create mode 100644 src/proxy/http/unit_tests/test_HttpTransactHeaders.cc
create mode 100644 src/proxy/unit_tests/test_ControlBase.cc
create mode 100644 src/proxy/unit_tests/test_FetchSM.cc
create mode 100644 src/tscore/unit_tests/test_PendingAction.cc
copy tests/gold_tests/{headers/range.test.py => at_headers/at_headers.test.py}
(85%)
copy {example => tests/gold_tests/at_headers}/plugins/CMakeLists.txt (93%)
create mode 100644 tests/gold_tests/at_headers/plugins/at_header_probe.cc
create mode 100644 tests/gold_tests/at_headers/replay/at_headers.replay.yaml
create mode 100644 tests/gold_tests/cache/cache_corrupt_recursive_uaf.test.py
create mode 100644 tests/gold_tests/cache/host_down_range_recursion.test.py
copy tests/gold_tests/{dns/replay/single_transaction.replay.yaml =>
cache/replay/host_down_range_recursion_prime.replay.yaml} (72%)
create mode 100644
tests/gold_tests/cache/replay/host_down_range_recursion_range.replay.yaml
create mode 100644 tests/gold_tests/chunked_encoding/chunk_extension_client.py
create mode 100644
tests/gold_tests/chunked_encoding/chunk_extension_quoted_string.test.py
create mode 100644
tests/gold_tests/chunked_encoding/chunk_trailer_bare_lf.test.py
create mode 100644 tests/gold_tests/chunked_encoding/chunk_trailer_client.py
copy tests/gold_tests/{statistics/metric_response_429.test.py =>
chunked_encoding/chunked_flow_control.test.py} (71%)
copy tests/gold_tests/{cache/alternate-caching.test.py =>
chunked_encoding/chunked_not_last.test.py} (74%)
copy tests/gold_tests/{tls/tls_sni_with_port.replay.yaml =>
chunked_encoding/replays/chunk_extension_quoted_string.replay.yaml} (66%)
copy tests/gold_tests/{tls/tls_sni_with_port.replay.yaml =>
chunked_encoding/replays/chunk_trailer_bare_lf.replay.yaml} (64%)
create mode 100644
tests/gold_tests/chunked_encoding/replays/chunked_h1_flow_control.replay.yaml
create mode 100644
tests/gold_tests/chunked_encoding/replays/chunked_h2_flow_control.replay.yaml
create mode 100644
tests/gold_tests/chunked_encoding/replays/chunked_not_last.replay.yaml
create mode 100644
tests/gold_tests/chunked_encoding/replays/chunked_passthru_flow_control.replay.yaml
create mode 100644 tests/gold_tests/connect/connect_parent_error_body.test.py
create mode 100644
tests/gold_tests/connect/replays/connect_parent_error_body.replay.yaml
create mode 100644 tests/gold_tests/cripts/cripts_bundle.replay.yaml
create mode 100644 tests/gold_tests/cripts/cripts_bundle.test.py
create mode 100644 tests/gold_tests/cripts/files/bundle_headers.cript
create mode 100644 tests/gold_tests/cripts/files/direct_headers.cript
create mode 100644 tests/gold_tests/cripts/files/server_bundle_headers.cript
copy tests/gold_tests/{connect/malformed_h2_request_client.py =>
h2/clients/h2_max_settings_per_minute.py} (58%)
create mode 100644 tests/gold_tests/h2/clients/h2_settings_ack_stall.py
create mode 100644 tests/gold_tests/h2/h1_trailer_client.py
create mode 100644 tests/gold_tests/h2/h2_origin_cert_reverify.test.py
copy tests/gold_tests/{ip_allow/replays/h3.replay.yaml =>
h2/h2_origin_trailers_h1.replay.yaml} (66%)
create mode 100644 tests/gold_tests/h2/h2_origin_trailers_h1.test.py
create mode 100644 tests/gold_tests/h2/http2_crlf_header_validation.test.py
create mode 100644 tests/gold_tests/h2/http2_txn_start_read_gate.test.py
copy tests/gold_tests/{remap/base.replay.yaml =>
h2/replay/http2_settings_ack_stall.replay.yaml} (68%)
copy tests/gold_tests/h2/{h2get_with_body.yaml =>
replay/http2_txn_start_read_gate.replay.yaml} (61%)
copy tests/gold_tests/h2/{expect_100_continue.yaml =>
replay_h2_origin_cert_reverify.yaml} (66%)
create mode 100644
tests/gold_tests/headers/clients/oversized_field_h2_client.py
copy plugins/experimental/magick/sign.sh =>
tests/gold_tests/headers/hopbyhop_connection.test.py (77%)
mode change 100755 => 100644
copy tests/gold_tests/{basic/basic.test.py => headers/oversized_field.test.py}
(69%)
create mode 100644 tests/gold_tests/headers/oversized_field_h2.test.py
create mode 100644 tests/gold_tests/headers/replay/oversized_field.replay.yaml
copy
tests/gold_tests/{pluginTest/escalate/escalate_failover_server_non_get.replay.yaml
=> headers/replay/oversized_field_h2.replay.yaml} (50%)
copy tests/gold_tests/headers/replays/{hsts.replay.yaml =>
hopbyhop_connection.replay.yaml} (51%)
create mode 100644 tests/gold_tests/ip_allow/connect_destination_acl.test.py
copy tests/gold_tests/next_hop/{strategies_ch2/strategies_ch2.test.py =>
strategies_ch5/strategies_ch5.test.py} (50%)
create mode 100644 tests/gold_tests/next_hop/strategies_ch5/trace.gold
copy tests/gold_tests/{cache/alternate-caching.test.py =>
parent_proxy/parent_retry_non_retryable_post.test.py} (72%)
create mode 100644
tests/gold_tests/parent_proxy/replays/parent_retry_non_retryable_post.replay.yaml
create mode 100644
tests/gold_tests/pipeline/delete_maxforwards_body_desync.test.py
create mode 100644 tests/gold_tests/pipeline/delete_maxfwd_noop_drain.test.py
create mode 100644 tests/gold_tests/pipeline/desync_client.py
create mode 100644 tests/gold_tests/pipeline/desync_client_miss.py
create mode 100644 tests/gold_tests/pipeline/desync_server.py
create mode 100644 tests/gold_tests/pipeline/noop_keepalive.test.py
create mode 100644 tests/gold_tests/pipeline/noop_keepalive_client.py
copy tests/gold_tests/pluginTest/certifier/replays/{https.replay.yaml =>
https-no-sni.replay.yaml} (95%)
copy tests/gold_tests/pluginTest/certifier/replays/{https.replay.yaml =>
https-path-traversal.replay.yaml} (93%)
copy tests/gold_tests/pluginTest/combo_handler/combo_handler_files/{tr2.gold
=> cache_control_aggregation.gold} (70%)
copy tests/gold_tests/pluginTest/combo_handler/combo_handler_files/{tr2.gold
=> max_age_zero.gold} (70%)
copy tests/gold_tests/pluginTest/combo_handler/combo_handler_files/{tr1.gold
=> tr3.gold} (100%)
copy tests/gold_tests/{ats_probe/ats_probe.replay.yaml =>
pluginTest/esi/esi_nested_html_comment.replay.yaml} (62%)
create mode 100644
tests/gold_tests/pluginTest/esi/esi_nested_html_comment.test.py
copy tests/gold_tests/pluginTest/{xdebug/x_probe/x_probe.replay.yaml =>
esi/esi_nested_html_comment_reject.replay.yaml} (57%)
create mode 100644 tests/gold_tests/pluginTest/esi/esi_request_size_cap.test.py
create mode 100644
tests/gold_tests/pluginTest/esi/esi_ssrf_validate.replay.yaml
create mode 100644 tests/gold_tests/pluginTest/esi/esi_ssrf_validate.test.py
copy tests/gold_tests/pluginTest/header_rewrite/rules/{rule_empty_body.conf =>
rule_cidr.conf} (71%)
create mode 100644
tests/gold_tests/pluginTest/header_rewrite/rules/rule_cookie.conf
copy plugins/lua/example/test_fetch.lua =>
tests/gold_tests/pluginTest/lua/fetch_ipv6_cliaddr.lua (60%)
copy tests/gold_tests/pluginTest/lua/{lua_client_hook.test.py =>
lua_fetch_ipv6_cliaddr.test.py} (50%)
create mode 100644 tests/gold_tests/pluginTest/lua/lua_remap_after_hook.test.py
copy plugins/lua/example/test_ret_403.lua =>
tests/gold_tests/pluginTest/lua/remap_after_hook.lua (71%)
copy
tests/gold_tests/pluginTest/{ja4_fingerprint/ja4_fingerprint_basic_server.replay.yaml
=> multiplexer/replays/multiplexer_invalid_chunk_copy.replay.yaml} (64%)
copy tests/gold_tests/{tls/tls_sni_with_port.replay.yaml =>
pluginTest/multiplexer/replays/multiplexer_invalid_chunk_original.replay.yaml}
(69%)
create mode 100644
tests/gold_tests/pluginTest/prefetch/prefetch_query_path_traversal.replay.yaml
copy tests/gold_tests/{headers/invalid_range_header.test.py =>
pluginTest/prefetch/prefetch_query_path_traversal.test.py} (82%)
copy ci/jenkins/bin/rat.sh =>
tests/gold_tests/pluginTest/rate_limit/concurrent_reject.sh (62%)
copy ci/jenkins/bin/rat.sh =>
tests/gold_tests/pluginTest/rate_limit/independent_limiters.sh (60%)
create mode 100755
tests/gold_tests/pluginTest/rate_limit/queue_bypass_regression.sh
create mode 100755 tests/gold_tests/pluginTest/rate_limit/queue_drain.sh
create mode 100644 tests/gold_tests/pluginTest/rate_limit/rate_limit.test.py
create mode 100644
tests/gold_tests/pluginTest/rate_limit/rate_limit_iprep.test.py
create mode 100644
tests/gold_tests/pluginTest/rate_limit/rate_limit_sni.test.py
copy ci/jenkins/bin/in_tree.sh =>
tests/gold_tests/pluginTest/rate_limit/retry_after.sh (70%)
copy ci/jenkins/bin/rat.sh =>
tests/gold_tests/pluginTest/rate_limit/sequential_pass.sh (62%)
create mode 100644
tests/gold_tests/pluginTest/redirect_limit/redirect_limit.test.py
create mode 100644 tests/gold_tests/pluginTest/slice/shrink_origin.py
create mode 100644
tests/gold_tests/pluginTest/slice/slice_content_shrink.test.py
copy
tests/gold_tests/pluginTest/stale_response/{stale_response_with_force_swr.replay.yaml
=> stale_response_max_memory.replay.yaml} (60%)
copy
tests/gold_tests/pluginTest/{ja4_fingerprint/ja4_fingerprint_basic_server.replay.yaml
=> webp_transform/replay/webp_chunked_cap.replay.yaml} (67%)
create mode 100644
tests/gold_tests/pluginTest/webp_transform/webp_transform_cache_refused.test.py
create mode 100644
tests/gold_tests/pluginTest/webp_transform/webp_transform_chunked_cap.test.py
create mode 100644
tests/gold_tests/pluginTest/webp_transform/webp_transform_decode_limit.test.py
create mode 100644
tests/gold_tests/pluginTest/webp_transform/webp_transform_max_buffer_size.test.py
create mode 100644
tests/gold_tests/pluginTest/webp_transform/webp_transform_size_cap.test.py
copy tests/gold_tests/pluginTest/{slice/replay/slice_long_etag.replay.yaml =>
xdebug/x_remap_long_url/x_remap_long_url.replay.yaml} (61%)
copy tests/gold_tests/{basic/basic.test.py =>
pluginTest/xdebug/x_remap_long_url/x_remap_long_url.test.py} (61%)
create mode 100644 tests/gold_tests/remap/regex_map_anchor.test.py
create mode 100644 tests/gold_tests/remap/replay/regex_map_anchor.replay.yaml
create mode 100644 tests/gold_tests/tls/proxy_protocol_addressless.test.py
create mode 100644
tests/gold_tests/tls/replay/outbound_sni_server_name_plain.replay.yaml
copy tests/gold_tests/{dns/replay/reverse_lookup.replay.yaml =>
tls/tls_accept_timeout_crash.replay.yaml} (74%)
create mode 100644 tests/gold_tests/tls/tls_accept_timeout_crash.test.py
create mode 100644 tests/gold_tests/tls/tls_engine_abort.py
create mode 100644 tests/gold_tests/tls/tls_engine_abort.test.py
create mode 100644
tests/gold_tests/tls/tls_outbound_sni_server_name_plain.test.py
create mode 100644 tests/gold_tests/uds/uds_socket_perm.test.py
create mode 100644 tests/tools/plugins/delay_txn_start.cc
create mode 100644 tests/tools/plugins/redirect_rearm.cc