This is an automated email from the ASF dual-hosted git repository. bneradt pushed a commit to branch 11-Dev in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit c8cb8ccaf9120347ce9cc3cd6b3ab0cd04eca9d2 Merge: 84923cd529 0983b5e783 Author: bneradt <bner...@yahooinc.com> AuthorDate: Tue May 13 13:37:54 2025 -0500 Merge remote-tracking branch 'upstream/master' into 11-Dev CMakeLists.txt | 10 +- CMakePresets.json | 7 +- cmake/ExperimentalPlugins.cmake | 22 +- cmake/Findopentelemetry.cmake | 64 +- cmake/Findwamr.cmake | 2 +- cmake/{Findwamr.cmake => Findwasmedge.cmake} | 32 +- cmake/{Findwamr.cmake => Findwasmtime.cmake} | 32 +- cmake/layout.cmake | 33 +- doc/Pipfile | 4 +- .../configuration/proxy-protocol.en.rst | 3 +- doc/admin-guide/files/records.yaml.en.rst | 20 +- doc/admin-guide/files/sni.yaml.en.rst | 16 +- doc/admin-guide/logging/formatting.en.rst | 3 +- .../statistics/core/http-connection.en.rst | 3 + .../plugins/cache_range_requests.en.rst | 30 +- doc/admin-guide/plugins/cachekey.en.rst | 2 +- doc/admin-guide/plugins/header_rewrite.en.rst | 67 +- doc/admin-guide/plugins/ja3_fingerprint.en.rst | 3 + doc/admin-guide/plugins/otel_tracer.en.rst | 32 +- doc/admin-guide/plugins/slice.en.rst | 8 + .../plugins/txn_box/dev/dev-guide.en.rst | 8 - doc/admin-guide/plugins/txn_box/misc.en.rst | 8 - doc/admin-guide/plugins/wasm.en.rst | 21 +- doc/appendices/command-line/traffic_ctl.en.rst | 19 +- doc/conf.cmake.in.py | 1 - doc/conf.py | 1 - .../api/functions/TSHttpOverridableConfig.en.rst | 1 + .../api/types/TSOverridableConfigKey.en.rst | 1 + .../cache-architecture/architecture.en.rst | 4 +- .../cripts/cripts-convenience.en.rst | 145 +++ doc/developer-guide/cripts/cripts-global.en.rst | 4 +- doc/developer-guide/cripts/cripts-misc.en.rst | 14 +- doc/developer-guide/cripts/cripts-overview.en.rst | 4 +- doc/developer-guide/cripts/cripts-urls.en.rst | 2 +- doc/developer-guide/cripts/index.en.rst | 1 + doc/developer-guide/debugging/index.en.rst | 1 + doc/developer-guide/debugging/tracing.en.rst | 72 ++ example/cripts/example1.cc | 2 +- example/cripts/{example1.cc => example2.cc} | 141 ++- include/cripts/Connections.hpp | 75 +- include/cripts/Context.hpp | 67 +- include/cripts/Epilogue.hpp | 46 +- include/cripts/Error.hpp | 6 +- include/cripts/Headers.hpp | 36 +- include/cripts/Preamble.hpp | 16 + include/cripts/Urls.hpp | 101 ++- include/iocore/cache/Cache.h | 25 +- include/iocore/eventsystem/ConfigProcessor.h | 2 +- include/iocore/eventsystem/VIO.h | 19 - include/iocore/hostdb/HostDBProcessor.h | 3 - include/iocore/net/Net.h | 4 +- include/iocore/net/NetVConnection.h | 9 +- include/iocore/net/TLSBasicSupport.h | 5 + include/iocore/net/TLSSNISupport.h | 24 +- include/iocore/net/YamlSNIConfig.h | 4 + include/mgmt/rpc/handlers/server/Server.h | 2 + include/proxy/FetchSM.h | 6 + include/proxy/ParentSelection.h | 2 +- include/proxy/PluginHttpConnect.h | 1 + include/proxy/hdrs/HTTP.h | 136 +-- include/proxy/hdrs/HdrToken.h | 3 + include/proxy/hdrs/MIME.h | 608 +++++-------- include/proxy/hdrs/XPACK.h | 15 +- include/proxy/http/Http1Transaction.h | 6 +- include/proxy/http/HttpCacheSM.h | 47 +- include/proxy/http/HttpConfig.h | 7 +- include/proxy/http/HttpTransact.h | 2 - include/proxy/http/HttpTunnel.h | 20 +- .../proxy/http/remap/NextHopSelectionStrategy.h | 9 +- include/proxy/http2/HPACK.h | 4 +- include/proxy/shared/DiagsConfig.h | 2 +- include/records/RecCore.h | 165 ++-- include/records/RecYAMLDefs.h | 4 +- include/ts/apidefs.h.in | 1 + include/tscore/CryptoHash.h | 4 +- include/tscore/ink_inet.h | 12 + include/tscore/ink_memory.h | 66 ++ lib/swoc/include/swoc/MemArena.h | 40 + lib/swoc/include/swoc/TextView.h | 4 +- lib/swoc/src/MemArena.cc | 6 +- lib/swoc/src/swoc_ip.cc | 4 +- .../cache_range_requests/cache_range_requests.cc | 118 ++- plugins/compress/configuration.cc | 2 + plugins/compress/configuration.h | 2 +- plugins/compress/debug_macros.h | 6 +- plugins/esi/fetcher/HttpDataFetcherImpl.cc | 2 + plugins/esi/fetcher/HttpDataFetcherImpl.h | 1 + plugins/experimental/CMakeLists.txt | 5 +- plugins/experimental/ja4_fingerprint/plugin.cc | 20 +- plugins/experimental/memcache/tsmemcache.cc | 2 +- plugins/experimental/otel_tracer/CMakeLists.txt | 14 +- plugins/experimental/uri_signing/common.h | 2 +- plugins/experimental/wasm/CMakeLists.txt | 23 +- plugins/experimental/wasm/lib/CMakeLists.txt | 10 + .../wasm/lib/README.proxy-wasm-cpp-host.md | 4 + .../wasm/lib/include/proxy-wasm/context.h | 4 +- .../lib/include/proxy-wasm/context_interface.h | 5 +- .../wasm/lib/include/proxy-wasm/exports.h | 10 +- .../wasm/lib/include/proxy-wasm/pairs_util.h | 1 + .../experimental/wasm/lib/include/proxy-wasm/sdk.h | 50 ++ .../wasm/lib/include/proxy-wasm/vm_id_handle.h | 4 +- .../wasm/lib/include/proxy-wasm/wasm.h | 3 +- .../wasm/lib/include/proxy-wasm/wasm_api_impl.h | 4 +- .../wasm/lib/include/proxy-wasm/wasm_vm.h | 4 +- .../wasm/lib/include/proxy-wasm/word.h | 4 +- plugins/experimental/wasm/lib/src/exports.cc | 25 + plugins/experimental/wasm/lib/src/wamr/wamr.cc | 33 +- plugins/experimental/wasm/lib/src/wasm.cc | 5 +- plugins/experimental/wasm/lib/src/wasmtime/types.h | 2 +- .../experimental/wasm/lib/src/wasmtime/wasmtime.cc | 6 +- plugins/header_rewrite/CMakeLists.txt | 2 +- plugins/header_rewrite/condition.cc | 45 +- plugins/header_rewrite/condition.h | 8 +- plugins/header_rewrite/conditions.cc | 193 ++-- plugins/header_rewrite/conditions.h | 221 +++-- plugins/header_rewrite/factory.cc | 5 +- plugins/header_rewrite/header_rewrite.cc | 3 +- plugins/header_rewrite/lulu.h | 3 + plugins/header_rewrite/matcher.cc | 110 ++- plugins/header_rewrite/matcher.h | 266 ++++-- plugins/header_rewrite/operators.cc | 53 +- plugins/header_rewrite/operators.h | 30 + plugins/header_rewrite/parser.cc | 1 + plugins/header_rewrite/parser.h | 51 ++ plugins/header_rewrite/regex_helper.cc | 1 + plugins/header_rewrite/regex_helper.h | 2 - plugins/header_rewrite/resources.cc | 4 + plugins/header_rewrite/resources.h | 5 +- plugins/header_rewrite/statement.cc | 22 + plugins/header_rewrite/statement.h | 22 +- plugins/ja3_fingerprint/ja3_fingerprint.cc | 15 +- plugins/lua/ts_lua_http_config.cc | 2 + plugins/origin_server_auth/origin_server_auth.cc | 43 +- plugins/prefetch/fetch.cc | 9 + plugins/slice/Config.cc | 12 +- plugins/slice/Config.h | 1 + plugins/slice/slice.cc | 8 +- plugins/slice/slice.h | 2 +- plugins/slice/util.cc | 20 + rc/CMakeLists.txt | 7 +- src/api/InkAPI.cc | 96 +- src/api/InkAPIInternal.cc | 294 +++---- src/api/InkAPITest.cc | 14 +- src/api/InkIOCoreAPI.cc | 2 +- src/cripts/Connections.cc | 57 +- src/cripts/Context.cc | 28 +- src/cripts/Error.cc | 7 +- src/cripts/Headers.cc | 123 +-- src/cripts/Plugins.cc | 2 +- src/cripts/Urls.cc | 229 ++--- src/iocore/aio/AIO.cc | 13 +- src/iocore/aio/test_AIO.cc | 2 +- src/iocore/cache/Cache.cc | 112 ++- src/iocore/cache/CacheDir.cc | 3 +- src/iocore/cache/CacheHosting.cc | 25 +- src/iocore/cache/CacheProcessor.cc | 66 +- src/iocore/cache/CacheRead.cc | 2 +- src/iocore/cache/CacheTest.cc | 4 +- src/iocore/cache/CacheVC.cc | 13 +- src/iocore/cache/CacheVC.h | 3 +- src/iocore/cache/CacheWrite.cc | 2 +- src/iocore/cache/HttpTransactCache.cc | 88 +- src/iocore/cache/P_CacheHosting.h | 6 +- src/iocore/cache/P_CacheInternal.h | 20 +- src/iocore/cache/PreservationTable.cc | 4 +- src/iocore/cache/PreservationTable.h | 2 +- src/iocore/cache/RamCacheLRU.cc | 13 +- src/iocore/cache/Stripe.h | 4 + src/iocore/cache/StripeSM.cc | 2 +- src/iocore/cache/StripeSM.h | 5 +- src/iocore/cache/unit_tests/main.cc | 2 +- src/iocore/cache/unit_tests/stub.cc | 5 + .../cache/unit_tests/test_Alternate_L_to_S.cc | 4 +- .../unit_tests/test_Alternate_L_to_S_remove_L.cc | 6 +- .../unit_tests/test_Alternate_L_to_S_remove_S.cc | 6 +- .../cache/unit_tests/test_Alternate_S_to_L.cc | 4 +- .../unit_tests/test_Alternate_S_to_L_remove_L.cc | 6 +- .../unit_tests/test_Alternate_S_to_L_remove_S.cc | 6 +- src/iocore/cache/unit_tests/test_RWW.cc | 2 +- src/iocore/cache/unit_tests/test_Update_header.cc | 2 +- src/iocore/dns/DNS.cc | 40 +- src/iocore/dns/SplitDNS.cc | 2 +- src/iocore/eventsystem/ConfigProcessor.cc | 5 +- src/iocore/eventsystem/EventSystem.cc | 26 +- src/iocore/eventsystem/UnixEventProcessor.cc | 4 +- src/iocore/eventsystem/UnixSocket.cc | 3 +- src/iocore/hostdb/HostDB.cc | 51 +- src/iocore/net/Net.cc | 37 +- src/iocore/net/NetHandler.cc | 18 +- src/iocore/net/OCSPStapling.cc | 10 +- src/iocore/net/P_NetAccept.h | 5 +- src/iocore/net/P_OCSPStapling.h | 7 +- src/iocore/net/P_SSLCertLookup.h | 4 +- src/iocore/net/P_UnixNet.h | 3 +- src/iocore/net/ProxyProtocol.cc | 16 +- src/iocore/net/QUICNetProcessor.cc | 3 +- src/iocore/net/QUICNetVConnection.cc | 1 + src/iocore/net/SNIActionPerformer.cc | 31 + src/iocore/net/SNIActionPerformer.h | 31 + src/iocore/net/SSLConfig.cc | 243 ++--- src/iocore/net/SSLNetProcessor.cc | 8 +- src/iocore/net/SSLNetVConnection.cc | 6 +- src/iocore/net/SSLUtils.cc | 26 +- src/iocore/net/Server.cc | 8 +- src/iocore/net/Socks.cc | 35 +- src/iocore/net/TLSBasicSupport.cc | 49 ++ src/iocore/net/TLSSNISupport.cc | 27 +- src/iocore/net/UnixNet.cc | 2 +- src/iocore/net/UnixNetAccept.cc | 16 +- src/iocore/net/UnixNetProcessor.cc | 7 +- src/iocore/net/UnixNetVConnection.cc | 2 +- src/iocore/net/UnixUDPNet.cc | 12 +- src/iocore/net/YamlSNIConfig.cc | 16 + src/iocore/net/libinknet_stub.cc | 5 + src/iocore/net/quic/QUICConfig.cc | 106 ++- src/iocore/net/unit_tests/test_ProxyProtocol.cc | 34 + src/mgmt/config/AddConfigFilesHere.cc | 5 +- src/mgmt/config/FileManager.cc | 6 +- src/mgmt/rpc/handlers/server/Server.cc | 23 + src/mgmt/rpc/handlers/storage/Storage.cc | 4 +- src/proxy/CacheControl.cc | 2 +- src/proxy/ControlBase.cc | 5 +- src/proxy/FetchSM.cc | 24 +- src/proxy/HostStatus.cc | 2 +- src/proxy/IPAllow.cc | 2 +- src/proxy/ParentSelection.cc | 34 +- src/proxy/Plugin.cc | 32 +- src/proxy/PluginHttpConnect.cc | 6 + src/proxy/ReverseProxy.cc | 8 +- src/proxy/Transform.cc | 12 +- src/proxy/hdrs/HTTP.cc | 112 +-- src/proxy/hdrs/HdrToken.cc | 25 +- src/proxy/hdrs/HeaderValidator.cc | 32 +- src/proxy/hdrs/MIME.cc | 979 +++++++++------------ src/proxy/hdrs/URL.cc | 84 +- src/proxy/hdrs/VersionConverter.cc | 83 +- src/proxy/hdrs/XPACK.cc | 7 +- src/proxy/hdrs/unit_tests/test_HdrUtils.cc | 24 +- src/proxy/hdrs/unit_tests/test_Hdrs.cc | 75 +- src/proxy/hdrs/unit_tests/test_HeaderValidator.cc | 4 +- src/proxy/hdrs/unit_tests/test_Huffmancode.cc | 4 +- src/proxy/hdrs/unit_tests/test_XPACK.cc | 7 + src/proxy/hdrs/unit_tests/test_mime.cc | 98 +-- src/proxy/http/Http1ClientSession.cc | 5 +- src/proxy/http/HttpBodyFactory.cc | 52 +- src/proxy/http/HttpCacheSM.cc | 51 +- src/proxy/http/HttpConfig.cc | 140 ++- src/proxy/http/HttpProxyServerMain.cc | 16 +- src/proxy/http/HttpSM.cc | 217 ++--- src/proxy/http/HttpSessionManager.cc | 27 +- src/proxy/http/HttpTransact.cc | 419 +++++---- src/proxy/http/HttpTransactHeaders.cc | 104 +-- src/proxy/http/HttpTunnel.cc | 79 +- src/proxy/http/PreWarmConfig.cc | 6 +- src/proxy/http/remap/NextHopSelectionStrategy.cc | 2 +- src/proxy/http/remap/PluginFactory.cc | 2 +- src/proxy/http/remap/RemapConfig.cc | 8 +- src/proxy/http/remap/RemapProcessor.cc | 72 +- src/proxy/http/remap/UrlRewrite.cc | 75 +- .../http/remap/unit-tests/nexthop_test_stubs.cc | 3 +- .../http/remap/unit-tests/nexthop_test_stubs.h | 1 - src/proxy/http/remap/unit-tests/test_PluginDso.cc | 8 +- src/proxy/http/unit_tests/test_HttpTransact.cc | 91 +- src/proxy/http2/HTTP2.cc | 76 +- src/proxy/http2/Http2ConnectionState.cc | 8 +- src/proxy/http2/Http2Stream.cc | 7 +- src/proxy/http2/test_HPACK.cc | 8 +- src/proxy/http2/unit_tests/test_HTTP2.cc | 16 +- .../http2/unit_tests/test_HpackIndexingTable.cc | 7 +- src/proxy/http3/Http3Config.cc | 10 +- src/proxy/http3/QPACK.cc | 4 +- src/proxy/http3/test/test_QPACK.cc | 4 +- src/proxy/logging/Log.cc | 15 +- src/proxy/logging/LogAccess.cc | 72 +- src/proxy/logging/LogConfig.cc | 87 +- .../logging/unit-tests/benchmark_LogObject.cc | 2 +- src/proxy/shared/DiagsConfig.cc | 92 +- src/records/RecConfigParse.cc | 2 +- src/records/RecCore.cc | 234 ++--- src/records/RecHttp.cc | 20 +- src/records/RecYAMLDecoder.cc | 76 +- src/records/RecordsConfig.cc | 6 +- src/shared/overridable_txn_vars.cc | 1 + src/traffic_crashlog/traffic_crashlog.cc | 9 +- src/traffic_ctl/CtrlCommands.cc | 10 + src/traffic_ctl/CtrlCommands.h | 3 + src/traffic_ctl/CtrlPrinters.cc | 7 +- src/traffic_ctl/CtrlPrinters.h | 9 + src/traffic_ctl/FileConfigCommand.cc | 3 +- src/traffic_ctl/jsonrpc/CtrlRPCRequests.h | 9 + src/traffic_ctl/traffic_ctl.cc | 12 +- src/traffic_layout/engine.cc | 3 +- src/traffic_quic/traffic_quic.cc | 5 + src/traffic_server/Crash.cc | 5 +- src/traffic_server/RpcAdminPubHandlers.cc | 6 +- src/traffic_server/traffic_server.cc | 250 +++--- src/traffic_top/stats.h | 11 +- src/tscore/ink_file.cc | 4 + src/tscore/ink_queue.cc | 1 + tests/CMakeLists.txt | 9 +- tests/README.md | 2 +- tests/autest.sh.in | 2 +- tests/gold_tests/autest-site/curl.test.ext | 76 ++ tests/gold_tests/autest-site/init.cli.ext | 2 + tests/gold_tests/autest-site/setup.cli.ext | 1 + .../gold_tests/autest-site/trafficserver.test.ext | 9 + tests/gold_tests/basic/basic.test.py | 2 +- tests/gold_tests/basic/config.test.py | 2 +- tests/gold_tests/basic/copy_config.test.py | 4 +- tests/gold_tests/basic/copy_config2.test.py | 4 +- tests/gold_tests/bigobj/bigobj.test.py | 22 +- tests/gold_tests/cache/background_fill.test.py | 33 +- tests/gold_tests/cache/cache-control.test.py | 5 +- .../cache/cache-generation-clear.test.py | 25 +- .../cache/cache-generation-disjoint.test.py | 30 +- .../cache/disjoint-wait-for-cache.test.py | 30 +- .../gold_tests/cache/negative-revalidating.test.py | 77 +- .../replay/negative-revalidating-list.replay.yaml | 150 ++++ .../chunked_encoding/bad_chunked_encoding.test.py | 10 +- .../chunked_encoding/chunked_encoding.test.py | 14 +- .../chunked_encoding/chunked_encoding_h2.test.py | 16 +- .../replays/malformed_chunked_header.replay.yaml | 89 ++ tests/gold_tests/connect/connect.test.py | 4 +- .../gold_tests/connect/gold/connect_0_stderr.gold | 2 - tests/gold_tests/continuations/double.test.py | 6 +- tests/gold_tests/continuations/double_h2.test.py | 6 +- tests/gold_tests/continuations/openclose.test.py | 6 +- .../gold_tests/continuations/openclose_h2.test.py | 6 +- tests/gold_tests/continuations/session_id.test.py | 10 +- tests/gold_tests/cripts/cripts.test.py | 25 +- tests/gold_tests/dns/splitdns.test.py | 4 +- tests/gold_tests/early_hints/early_hints.test.py | 4 +- .../gold_tests/forward_proxy/forward_proxy.test.py | 4 +- tests/gold_tests/h2/h2disable.test.py | 7 +- .../h2/h2disable_no_accept_threads.test.py | 7 +- tests/gold_tests/h2/h2enable.test.py | 9 +- .../h2/h2enable_no_accept_threads.test.py | 7 +- tests/gold_tests/h2/http2.test.py | 12 +- tests/gold_tests/h2/http2_priority.test.py | 2 +- tests/gold_tests/h2/httpbin.test.py | 13 +- tests/gold_tests/headers/accept_webp.test.py | 15 +- .../gold_tests/headers/cache_and_req_body.test.py | 10 +- tests/gold_tests/headers/cachedIMSRange.test.py | 56 +- tests/gold_tests/headers/field_name_space.test.py | 3 +- tests/gold_tests/headers/forwarded.test.py | 36 +- .../headers/good_request_after_bad.test.py | 7 +- tests/gold_tests/headers/hsts.test.py | 8 +- tests/gold_tests/headers/normalize_ae.test.py | 14 +- tests/gold_tests/headers/range.test.py | 26 +- tests/gold_tests/headers/syntax.test.py | 27 +- tests/gold_tests/headers/via.test.py | 25 +- tests/gold_tests/ip_allow/ip_allow.test.py | 11 +- tests/gold_tests/logging/all_headers.test.py | 6 +- tests/gold_tests/logging/custom-log.test.py | 16 +- tests/gold_tests/logging/log-field-json.test.py | 16 +- tests/gold_tests/logging/log-field.test.py | 6 +- tests/gold_tests/logging/log-filenames.test.py | 4 +- tests/gold_tests/logging/log_retention.test.py | 24 +- tests/gold_tests/logging/new_log_flds.test.py | 16 +- tests/gold_tests/logging/pqsi-pqsp.test.py | 4 +- .../parent_config/parent_config_dest_ip.test.py | 4 +- .../next_hop/strategies_ch/strategies_ch.test.py | 2 +- .../next_hop/strategies_ch2/strategies_ch2.test.py | 4 +- .../strategies_stale/strategies_stale.test.py | 4 +- .../zzz_strategies_peer.test.py | 6 +- .../zzz_strategies_peer2.test.py | 8 +- .../null_transform/null_transform.test.py | 4 +- .../per_server_connection_max.test.py | 6 +- tests/gold_tests/parent_proxy/parent-retry.test.py | 2 +- .../pluginTest/TSVConnFd/TSVConnFd.test.py | 4 +- .../cache_range_requests.test.py | 31 +- ...range_requests_cache_complete_responses.test.py | 32 +- .../cache_range_requests_cachekey.test.py | 8 +- .../cache_range_requests_cachekey_global.test.py | 4 +- .../cache_range_requests_ident.test.py | 195 ++++ .../cache_range_requests_ims.test.py | 10 +- .../pluginTest/cert_update/cert_update.test.py | 9 +- .../client_context_dump.test.py | 2 +- .../pluginTest/compress/compress.test.py | 36 +- tests/gold_tests/pluginTest/compress/greplog.sh | 4 +- .../pluginTest/cookie_remap/bucketcookie.test.py | 14 +- .../cookie_remap/collapseslashes.test.py | 7 +- .../pluginTest/cookie_remap/connector.test.py | 14 +- .../pluginTest/cookie_remap/existscookie.test.py | 14 +- .../pluginTest/cookie_remap/matchcookie.test.py | 14 +- .../pluginTest/cookie_remap/matchuri.test.py | 14 +- .../cookie_remap/notexistscookie.test.py | 14 +- .../cookie_remap/pcollapseslashes.test.py | 7 +- .../pluginTest/cookie_remap/psubstitute.test.py | 28 +- .../pluginTest/cookie_remap/regexcookie.test.py | 14 +- .../pluginTest/cookie_remap/setstatus.test.py | 14 +- .../pluginTest/cookie_remap/subcookie.test.py | 10 +- .../pluginTest/cookie_remap/substitute.test.py | 28 +- tests/gold_tests/pluginTest/esi/esi.test.py | 126 +-- tests/gold_tests/pluginTest/esi/esi_304.test.py | 14 +- .../pluginTest/header_rewrite/gold/ext-sets.gold | 10 + .../header_rewrite/gold/header_rewrite-client.gold | 2 +- .../header_rewrite/header_rewrite.test.py | 4 +- .../header_rewrite_cond_cache.test.py | 10 +- .../header_rewrite_cond_method.test.py | 9 +- .../header_rewrite_cond_ssn_txn_count.test.py | 12 +- .../header_rewrite/header_rewrite_l_value.test.py | 4 +- .../header_rewrite_set_body_from.test.py | 15 +- .../header_rewrite/header_rewrite_url.test.py | 32 +- .../header_rewrite/header_rewrite_url_glob.test.py | 4 +- .../header_rewrite/rules/rule_client.conf | 12 +- .../header_rewrite/rules/rule_cond_method.conf | 2 +- .../ja3_fingerprint/ja3_fingerprint.test.py | 4 +- .../ja3_fingerprint_global.replay.yaml | 3 + .../ja3_fingerprint_remap.replay.yaml | 4 + .../ja4_fingerprint/ja4_fingerprint.replay.yaml | 1 + .../ja4_fingerprint/ja4_fingerprint.test.py | 3 +- .../pluginTest/lua/lua_client_hook.test.py | 2 +- .../pluginTest/lua/lua_debug_tags.test.py | 4 +- .../pluginTest/lua/lua_header_table.test.py | 2 +- .../pluginTest/lua/lua_states_stats.test.py | 4 +- .../pluginTest/lua/lua_watermark.test.py | 2 +- .../pluginTest/money_trace/money_trace.test.py | 28 +- .../money_trace/money_trace_global.test.py | 8 +- .../origin_server_auth/origin_server_auth.test.py | 9 +- .../rules/gcp-parse-test.test_input | 31 - .../polite_hook_wait/polite_hook_wait.test.py | 10 +- .../pluginTest/prefetch/prefetch_bignum.test.py | 3 +- .../pluginTest/prefetch/prefetch_cmcd.test.py | 24 +- .../pluginTest/prefetch/prefetch_overflow.test.py | 3 +- .../pluginTest/prefetch/prefetch_simple.test.py | 2 +- .../pluginTest/regex_remap/regex_remap.test.py | 12 +- .../regex_revalidate/regex_revalidate.test.py | 20 +- .../regex_revalidate/regex_revalidate_miss.test.py | 22 +- .../pluginTest/remap_stats/remap_stats.test.py | 4 +- .../remap_stats/remap_stats_post.test.py | 4 +- .../pluginTest/slice/gold/slice_crr_ident.gold | 13 + .../pluginTest/slice/gold/slice_ident.gold | 15 + tests/gold_tests/pluginTest/slice/slice.test.py | 22 +- .../pluginTest/slice/slice_conditional.test.py | 14 +- .../pluginTest/slice/slice_crr_ident.test.py | 222 +++++ .../pluginTest/slice/slice_error.test.py | 10 +- .../pluginTest/slice/slice_ident.test.py | 188 ++++ .../pluginTest/slice/slice_prefetch.test.py | 14 +- .../pluginTest/slice/slice_regex.test.py | 10 +- .../pluginTest/slice/slice_selfhealing.test.py | 99 ++- .../pluginTest/sslheaders/sslheaders.test.py | 4 +- .../stats_over_http/stats_over_http.test.py | 2 +- .../pluginTest/test_hooks/body_buffer.test.py | 4 +- .../pluginTest/test_hooks/hook_add.test.py | 2 +- .../test_hooks/ssn_start_delay_hook.test.py | 2 +- .../pluginTest/test_hooks/test_hooks.test.py | 10 +- .../pluginTest/tsapi/test_TSHttpSsnInfo.test.py | 14 +- .../tsapi/test_TSHttpSsnInfo_nghttp0.gold | 18 +- tests/gold_tests/pluginTest/tsapi/tsapi.test.py | 9 +- .../pluginTest/uri_signing/uri_signing.test.py | 61 +- .../gold_tests/pluginTest/url_sig/url_sig.test.py | 70 +- tests/gold_tests/post/post-continue.test.py | 80 +- tests/gold_tests/post/post-early-return.test.py | 10 +- .../post_slow_server/post_slow_server.test.py | 4 +- .../post_slow_server_max_requests_in.test.py | 2 +- .../proxy_serve_stale_dns_fail.test.py | 16 +- .../redirect/number_of_redirects.test.py | 4 +- tests/gold_tests/redirect/redirect_post.test.py | 5 +- .../gold_tests/remap/basic_conf_remap_yaml.test.py | 5 +- tests/gold_tests/remap/regex_map.test.py | 2 +- tests/gold_tests/remap/remap_http.test.py | 40 +- tests/gold_tests/remap/remap_https.test.py | 23 +- tests/gold_tests/remap/remap_ip_resolve.test.py | 4 +- tests/gold_tests/remap/remap_ws.test.py | 15 +- .../session_sharing/session_match.test.py | 8 +- tests/gold_tests/slow_post/server_abort.test.py | 2 +- tests/gold_tests/timeout/active_timeout.test.py | 8 +- tests/gold_tests/timeout/conn_timeout.test.py | 4 +- tests/gold_tests/timeout/inactive_timeout.test.py | 6 +- tests/gold_tests/timeout/tls_conn_timeout.test.py | 12 +- tests/gold_tests/tls/allow-plain.test.py | 15 +- tests/gold_tests/tls/ssl/passphrase.key | 56 +- tests/gold_tests/tls/ssl/passphrase.pem | 46 +- tests/gold_tests/tls/ssl/passphrase2.key | 56 +- tests/gold_tests/tls/ssl/passphrase2.pem | 46 +- tests/gold_tests/tls/ssl_key_dialog.test.py | 8 +- tests/gold_tests/tls/ssl_multicert_loader.test.py | 6 +- tests/gold_tests/tls/tls_0rtt_server.test.py | 2 +- tests/gold_tests/tls/tls_bad_alpn.test.py | 2 +- .../tls/tls_check_cert_select_plugin.test.py | 20 +- .../tls/tls_check_cert_selection.test.py | 13 +- .../tls/tls_check_cert_selection_reload.test.py | 16 +- tests/gold_tests/tls/tls_client_cert.test.py | 24 +- tests/gold_tests/tls/tls_client_cert2.test.py | 16 +- .../gold_tests/tls/tls_client_cert2_plugin.test.py | 16 +- .../tls/tls_client_cert_override.test.py | 8 +- .../tls/tls_client_cert_override_plugin.test.py | 14 +- .../gold_tests/tls/tls_client_cert_plugin.test.py | 24 +- tests/gold_tests/tls/tls_client_verify.test.py | 61 +- tests/gold_tests/tls/tls_client_verify2.test.py | 49 +- tests/gold_tests/tls/tls_client_verify3.test.py | 36 +- tests/gold_tests/tls/tls_client_versions.test.py | 20 +- .../tls/tls_client_versions_minmax.test.py | 36 +- tests/gold_tests/tls/tls_engine.test.py | 2 +- .../gold_tests/tls/tls_hooks_client_verify.test.py | 15 +- tests/gold_tests/tls/tls_hooks_verify.test.py | 7 +- tests/gold_tests/tls/tls_keepalive.test.py | 18 +- tests/gold_tests/tls/tls_ocsp.test.py | 5 +- .../tls/tls_origin_session_reuse.test.py | 12 +- .../tls/tls_partial_blind_tunnel.test.py | 3 +- tests/gold_tests/tls/tls_sni_host_policy.test.py | 42 +- tests/gold_tests/tls/tls_sni_with_port.test.py | 27 +- tests/gold_tests/tls/tls_sni_yaml_reload.test.py | 10 +- tests/gold_tests/tls/tls_tunnel.test.py | 28 +- tests/gold_tests/tls/tls_tunnel_forward.test.py | 8 +- tests/gold_tests/tls/tls_verify.test.py | 10 +- tests/gold_tests/tls/tls_verify2.test.py | 12 +- tests/gold_tests/tls/tls_verify3.test.py | 14 +- tests/gold_tests/tls/tls_verify4.test.py | 6 +- tests/gold_tests/tls/tls_verify_base.test.py | 8 +- .../gold_tests/tls/tls_verify_ca_override.test.py | 8 +- .../gold_tests/tls/tls_verify_not_pristine.test.py | 4 +- tests/gold_tests/tls/tls_verify_override.test.py | 27 +- .../tls/tls_verify_override_base.test.py | 28 +- .../gold_tests/tls/tls_verify_override_sni.test.py | 6 +- tests/gold_tests/tls_hooks/tls_hooks.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks10.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks11.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks12.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks13.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks14.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks15.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks16.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks17.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks18.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks2.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks3.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks4.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks6.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks7.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks8.test.py | 2 +- tests/gold_tests/tls_hooks/tls_hooks9.test.py | 2 +- .../traffic_ctl/remap_inc/remap_inc.test.py | 2 +- .../traffic_ctl/traffic_ctl_config_output.test.py | 146 +-- .../traffic_ctl_server_output.test.py} | 46 +- ...ig_output.test.py => traffic_ctl_test_utils.py} | 169 ++-- tests/gold_tests/tunnel/tunnel_transform.test.py | 4 +- tests/gold_tests/tunnel/txn_type.test.py | 12 +- tools/build_boringssl_h3_tools.sh | 24 +- tools/build_openssl_h3_tools.sh | 14 +- tools/records/convert2yaml.py | 12 +- 542 files changed, 8784 insertions(+), 6084 deletions(-) diff --cc src/iocore/net/SSLConfig.cc index 7a2b566993,00a53b700f..3439266180 --- a/src/iocore/net/SSLConfig.cc +++ b/src/iocore/net/SSLConfig.cc @@@ -414,28 -422,43 +412,36 @@@ SSLConfigParams::initialize( // we keep it unless "server_max_early_data" is higher. server_recv_max_early_data = std::max(server_max_early_data, TLSEarlyDataSupport::DEFAULT_MAX_EARLY_DATA_SIZE); - REC_ReadConfigStringAlloc(serverCertChainFilename, "proxy.config.ssl.server.cert_chain.filename"); - REC_ReadConfigStringAlloc(serverCertRelativePath, "proxy.config.ssl.server.cert.path"); - set_paths_helper(serverCertRelativePath, nullptr, &serverCertPathOnly, nullptr); - ats_free(serverCertRelativePath); + if (auto rec_str{RecGetRecordStringAlloc("proxy.config.ssl.server.cert_chain.filename")}; rec_str) { + serverCertChainFilename = ats_stringdup(rec_str); + } - configFilePath = ats_stringdup(RecConfigReadConfigPath("proxy.config.ssl.server.multicert.filename")); - REC_ReadConfigInteger(configExitOnLoadError, "proxy.config.ssl.server.multicert.exit_on_load_fail"); + { + auto rec_str{RecGetRecordStringAlloc("proxy.config.ssl.server.cert.path")}; + auto serverCertRelativePath{ats_as_c_str(rec_str)}; + set_paths_helper(serverCertRelativePath, nullptr, &serverCertPathOnly, nullptr); + } - REC_ReadConfigStringAlloc(ssl_server_private_key_path, "proxy.config.ssl.server.private_key.path"); - set_paths_helper(ssl_server_private_key_path, nullptr, &serverKeyPathOnly, nullptr); - ats_free(ssl_server_private_key_path); + configFilePath = ats_stringdup(RecConfigReadConfigPath("proxy.config.ssl.server.multicert.filename")); + configExitOnLoadError = RecGetRecordInt("proxy.config.ssl.server.multicert.exit_on_load_fail").value_or(0); - REC_ReadConfigStringAlloc(ssl_server_ca_cert_filename, "proxy.config.ssl.CA.cert.filename"); - REC_ReadConfigStringAlloc(CACertRelativePath, "proxy.config.ssl.CA.cert.path"); + { + auto rec_str{RecGetRecordStringAlloc("proxy.config.ssl.server.private_key.path")}; + auto ssl_server_private_key_path{ats_as_c_str(rec_str)}; + set_paths_helper(ssl_server_private_key_path, nullptr, &serverKeyPathOnly, nullptr); + } - set_paths_helper(CACertRelativePath, ssl_server_ca_cert_filename, &serverCACertPath, &serverCACertFilename); - ats_free(ssl_server_ca_cert_filename); - ats_free(CACertRelativePath); + { + auto pash_str{RecGetRecordStringAlloc("proxy.config.ssl.CA.cert.filename")}; + auto ssl_server_ca_cert_filename{ats_as_c_str(pash_str)}; + auto filename_str{RecGetRecordStringAlloc("proxy.config.ssl.CA.cert.path")}; + auto CACertRelativePath{ats_as_c_str(filename_str)}; + set_paths_helper(CACertRelativePath, ssl_server_ca_cert_filename, &serverCACertPath, &serverCACertFilename); + } // SSL session cache configurations - REC_ReadConfigInteger(ssl_origin_session_cache, "proxy.config.ssl.origin_session_cache.enabled"); - REC_ReadConfigInteger(ssl_origin_session_cache_size, "proxy.config.ssl.origin_session_cache.size"); + ssl_origin_session_cache = RecGetRecordInt("proxy.config.ssl.origin_session_cache.enabled").value_or(0); + ssl_origin_session_cache_size = RecGetRecordInt("proxy.config.ssl.origin_session_cache.size").value_or(0); - ssl_session_cache = RecGetRecordInt("proxy.config.ssl.session_cache.value").value_or(0); - ssl_session_cache_size = RecGetRecordInt("proxy.config.ssl.session_cache.size").value_or(0); - ssl_session_cache_num_buckets = RecGetRecordInt("proxy.config.ssl.session_cache.num_buckets").value_or(0); - ssl_session_cache_skip_on_contention = - RecGetRecordInt("proxy.config.ssl.session_cache.skip_cache_on_bucket_contention").value_or(0); - ssl_session_cache_timeout = RecGetRecordInt("proxy.config.ssl.session_cache.timeout").value_or(0); - ssl_session_cache_auto_clear = RecGetRecordInt("proxy.config.ssl.session_cache.auto_clear").value_or(0); SSLConfigParams::origin_session_cache = ssl_origin_session_cache; SSLConfigParams::origin_session_cache_size = ssl_origin_session_cache_size;