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 99499a05d6e2a55b3e6a072b2593c49cf0331130 Merge: 6e5d6f2a47 607783448e Author: bneradt <bner...@yahooinc.com> AuthorDate: Tue May 7 10:19:54 2024 -0600 Merge master into 11-Dev Conflicts are related to: https://github.com/apache/trafficserver/pull/11157 .clang-format | 44 +- CMakeLists.txt | 26 +- CMakePresets.json | 46 +- cmake/ExperimentalPlugins.cmake | 15 +- plugins/esi/CMakeLists.txt => cmake/Findwamr.cmake | 38 +- cmake/add_atsplugin.cmake | 13 +- doc/admin-guide/files/ip_allow.yaml.en.rst | 22 + doc/admin-guide/files/records.yaml.en.rst | 36 +- doc/admin-guide/files/remap.config.en.rst | 2 + doc/admin-guide/files/sni.yaml.en.rst | 382 +++++----- .../statistics/core/http-connection.en.rst | 11 +- doc/admin-guide/plugins/header_rewrite.en.rst | 18 + doc/admin-guide/plugins/ja3_fingerprint.en.rst | 14 +- doc/admin-guide/plugins/lua.en.rst | 10 +- doc/admin-guide/plugins/rate_limit.en.rst | 10 + example/cripts/example1.cc | 20 +- example/plugins/c-api/add_header/add_header.cc | 18 +- .../c-api/append_transform/append_transform.cc | 20 +- example/plugins/c-api/basic_auth/basic_auth.cc | 20 +- .../c-api/bnull_transform/bnull_transform.cc | 18 +- example/plugins/c-api/cache_scan/cache_scan.cc | 46 +- example/plugins/c-api/cert_update/cert_update.cc | 6 +- .../client_context_dump/client_context_dump.cc | 14 +- example/plugins/c-api/denylist_0/denylist_0.cc | 22 +- example/plugins/c-api/denylist_1/denylist_1.cc | 38 +- .../plugins/c-api/disable_http2/disable_http2.cc | 8 +- example/plugins/c-api/file_1/file_1.cc | 4 +- example/plugins/c-api/intercept/intercept.cc | 50 +- .../c-api/lifecycle_plugin/lifecycle_plugin.cc | 2 +- .../plugins/c-api/null_transform/null_transform.cc | 18 +- .../plugins/c-api/output_header/output_header.cc | 12 +- example/plugins/c-api/passthru/passthru.cc | 20 +- example/plugins/c-api/protocol/Protocol.cc | 14 +- example/plugins/c-api/protocol/TxnSM.cc | 20 +- example/plugins/c-api/protocol/TxnSM.h | 38 +- .../plugins/c-api/protocol_stack/protocol_stack.cc | 4 +- example/plugins/c-api/query_remap/query_remap.cc | 10 +- example/plugins/c-api/redirect_1/redirect_1.cc | 14 +- example/plugins/c-api/remap/remap.cc | 30 +- .../c-api/remap_header_add/remap_header_add.cc | 6 +- .../plugins/c-api/replace_header/replace_header.cc | 4 +- .../plugins/c-api/request_buffer/request_buffer.cc | 20 +- .../c-api/response_header_1/response_header_1.cc | 16 +- example/plugins/c-api/secure_link/secure_link.cc | 22 +- example/plugins/c-api/server_push/server_push.cc | 2 +- .../c-api/server_transform/server_transform.cc | 42 +- .../plugins/c-api/session_hooks/session_hooks.cc | 2 +- .../plugins/c-api/ssl_preaccept/ssl_preaccept.cc | 12 +- example/plugins/c-api/ssl_sni/ssl_sni.cc | 12 +- .../c-api/ssl_sni_allowlist/ssl_sni_allowlist.cc | 12 +- example/plugins/c-api/statistic/statistic.cc | 2 +- example/plugins/c-api/thread_pool/psi.cc | 78 +- example/plugins/c-api/thread_pool/thread.cc | 2 +- example/plugins/c-api/thread_pool/thread.h | 14 +- .../plugins/c-api/txn_data_sink/txn_data_sink.cc | 6 +- example/plugins/c-api/vconn_args/vconn_args.cc | 4 +- example/plugins/c-api/verify_cert/verify_cert.cc | 10 +- include/api/APIHook.h | 6 +- include/api/InkAPIInternal.h | 38 +- include/cripts/Bundle.hpp | 2 +- include/cripts/Bundles/Common.hpp | 6 +- include/cripts/Bundles/LogsMetrics.hpp | 8 +- include/cripts/Configs.hpp | 419 +++++------ include/cripts/Connections.hpp | 48 +- include/cripts/Context.hpp | 26 +- include/cripts/Crypto.hpp | 16 +- include/cripts/Epilogue.hpp | 26 +- include/cripts/Error.hpp | 6 +- include/cripts/Files.hpp | 2 +- include/cripts/Headers.hpp | 34 +- include/cripts/Instance.hpp | 18 +- include/cripts/Lulu.hpp | 97 +-- include/cripts/Matcher.hpp | 18 +- include/cripts/Metrics.hpp | 8 +- include/cripts/Plugins.hpp | 17 +- include/cripts/Preamble.hpp | 6 +- include/cripts/Time.hpp | 4 +- include/cripts/Transaction.hpp | 8 +- include/cripts/Urls.hpp | 88 +-- include/iocore/aio/AIO.h | 20 +- include/iocore/aio/AIO_fault_injection.h | 10 +- include/iocore/cache/AggregateWriteBuffer.h | 20 +- include/iocore/cache/Cache.h | 46 +- include/iocore/cache/CacheDefs.h | 6 +- include/iocore/cache/CacheVC.h | 139 ++-- include/iocore/cache/HttpConfigAccessor.h | 10 +- include/iocore/cache/Store.h | 14 +- include/iocore/dns/DNSEventIO.h | 2 +- include/iocore/dns/DNSProcessor.h | 32 +- include/iocore/dns/SRV.h | 16 +- include/iocore/dns/SplitDNSProcessor.h | 10 +- include/iocore/eventsystem/ConfigProcessor.h | 8 +- include/iocore/eventsystem/EThread.h | 26 +- include/iocore/eventsystem/Event.h | 4 +- include/iocore/eventsystem/EventProcessor.h | 20 +- .../iocore/eventsystem/Freer.h | 0 include/iocore/eventsystem/IOBuffer.h | 22 +- include/iocore/eventsystem/Lock.h | 14 +- include/iocore/eventsystem/PriorityEventQueue.h | 4 +- include/iocore/eventsystem/ProtectedQueue.h | 16 +- include/iocore/eventsystem/ProxyAllocator.h | 9 +- include/iocore/eventsystem/SocketManager.h | 4 +- include/iocore/eventsystem/Tasks.h | 2 +- include/iocore/eventsystem/Thread.h | 2 +- include/iocore/eventsystem/VIO.h | 12 +- include/iocore/hostdb/HostDBProcessor.h | 24 +- include/iocore/hostdb/HostFile.h | 2 +- include/iocore/io_uring/IOUringEventIO.h | 2 +- include/iocore/io_uring/IO_URING.h | 14 +- include/iocore/net/ConnectionTracker.h | 46 +- include/iocore/net/EventIO.h | 14 +- include/iocore/net/NetAcceptEventIO.h | 2 +- include/iocore/net/NetEvent.h | 33 +- include/iocore/net/NetHandler.h | 26 +- include/iocore/net/NetTimeout.h | 33 +- include/iocore/net/NetVCOptions.h | 2 +- include/iocore/net/NetVConnection.h | 14 +- include/iocore/net/PollCont.h | 6 +- include/iocore/net/PreWarm.h | 8 +- include/iocore/net/ProxyProtocol.h | 14 +- include/iocore/net/QUICMultiCertConfigLoader.h | 12 +- include/iocore/net/QUICSupport.h | 6 +- include/iocore/net/ReadWriteEventIO.h | 6 +- include/iocore/net/SSLAPIHooks.h | 7 +- include/iocore/net/SSLMultiCertConfigLoader.h | 106 +++ include/iocore/net/SSLSNIConfig.h | 26 +- include/iocore/net/SSLTypes.h | 22 + include/iocore/net/Socks.h | 2 +- include/iocore/net/TLSALPNSupport.h | 18 +- include/iocore/net/TLSBasicSupport.h | 16 +- include/iocore/net/TLSCertSwitchSupport.h | 10 +- include/iocore/net/TLSEarlyDataSupport.h | 8 +- include/iocore/net/TLSSNISupport.h | 23 +- include/iocore/net/TLSSessionResumptionSupport.h | 19 +- include/iocore/net/TLSTunnelSupport.h | 22 +- include/iocore/net/UDPConnection.h | 12 +- include/iocore/net/UDPEventIO.h | 4 +- include/iocore/net/UDPNet.h | 6 +- include/iocore/net/UDPPacket.h | 18 +- include/iocore/net/YamlSNIConfig.h | 66 +- include/iocore/net/quic/MTHashTable.h | 32 +- include/iocore/net/quic/Mock.h | 45 +- include/iocore/net/quic/QUICApplicationMap.h | 6 +- include/iocore/net/quic/QUICConfig.h | 110 +-- include/iocore/net/quic/QUICConnection.h | 34 +- include/iocore/net/quic/QUICConnectionTable.h | 2 +- include/iocore/net/quic/QUICContext.h | 4 +- include/iocore/net/quic/QUICGlobals.h | 2 +- include/iocore/net/quic/QUICIntUtil.h | 8 +- include/iocore/net/quic/QUICStream.h | 21 +- include/iocore/net/quic/QUICStreamAdapter.h | 12 +- include/iocore/net/quic/QUICStreamManager.h | 20 +- include/iocore/net/quic/QUICStreamVCAdapter.h | 22 +- .../iocore/net/quic/QUICTransferProgressProvider.h | 16 +- include/iocore/net/quic/QUICTransportParameters.h | 14 +- include/iocore/net/quic/QUICTypes.h | 136 ++-- include/iocore/utils/Machine.h | 22 +- include/iocore/utils/OneWayMultiTunnel.h | 8 +- include/iocore/utils/OneWayTunnel.h | 14 +- include/mgmt/config/FileManager.h | 18 +- include/mgmt/rpc/config/JsonRPCConfig.h | 6 +- include/mgmt/rpc/handlers/server/Server.h | 2 +- include/mgmt/rpc/jsonrpc/Defs.h | 12 +- include/mgmt/rpc/jsonrpc/JsonRPCManager.h | 14 +- include/mgmt/rpc/server/CommBase.h | 10 +- include/mgmt/rpc/server/IPCSocketServer.h | 14 +- include/mgmt/rpc/server/RPCServer.h | 10 +- include/proxy/CacheControl.h | 28 +- include/proxy/ControlBase.h | 8 +- include/proxy/ControlMatcher.h | 106 +-- include/proxy/FetchSM.h | 99 ++- include/proxy/HostStatus.h | 44 +- include/proxy/IPAllow.h | 22 +- include/proxy/ParentConsistentHash.h | 18 +- include/proxy/ParentRoundRobin.h | 10 +- include/proxy/ParentSelection.h | 96 +-- include/proxy/Plugin.h | 6 +- include/proxy/PluginVC.h | 62 +- include/proxy/PoolableSession.h | 20 +- include/proxy/ProxySession.h | 33 +- include/proxy/ProxyTransaction.h | 48 +- include/proxy/RegressionSM.h | 26 +- include/proxy/ReverseProxy.h | 2 +- include/proxy/Transform.h | 2 +- include/proxy/TransformInternal.h | 52 +- include/proxy/hdrs/HTTP.h | 138 ++-- include/proxy/hdrs/HdrHeap.h | 38 +- include/proxy/hdrs/HdrToken.h | 36 +- include/proxy/hdrs/HdrUtils.h | 10 +- include/proxy/hdrs/HuffmanCodec.h | 8 +- include/proxy/hdrs/MIME.h | 230 +++--- include/proxy/hdrs/URL.h | 92 +-- include/proxy/hdrs/XPACK.h | 50 +- include/proxy/http/ConnectingEntry.h | 26 +- include/proxy/http/Http1ClientSession.h | 24 +- include/proxy/http/Http1ServerSession.h | 18 +- include/proxy/http/Http1Transaction.h | 2 +- include/proxy/http/HttpBodyFactory.h | 42 +- include/proxy/http/HttpCacheSM.h | 18 +- include/proxy/http/HttpConfig.h | 88 +-- include/proxy/http/HttpProxyServerMain.h | 8 +- include/proxy/http/HttpSM.h | 206 +++--- include/proxy/http/HttpSessionAccept.h | 2 +- include/proxy/http/HttpSessionManager.h | 20 +- include/proxy/http/HttpTransact.h | 246 +++---- include/proxy/http/HttpTransactHeaders.h | 2 +- include/proxy/http/HttpTunnel.h | 128 ++-- include/proxy/http/HttpUserAgent.h | 10 +- include/proxy/http/HttpVCTable.h | 28 +- include/proxy/http/PreWarmConfig.h | 8 +- include/proxy/http/PreWarmManager.h | 56 +- include/proxy/http/remap/AclFiltering.h | 46 +- include/proxy/http/remap/NextHopConsistentHash.h | 2 +- include/proxy/http/remap/NextHopRoundRobin.h | 2 +- .../proxy/http/remap/NextHopSelectionStrategy.h | 70 +- include/proxy/http/remap/NextHopStrategyFactory.h | 4 +- include/proxy/http/remap/PluginDso.h | 49 +- include/proxy/http/remap/PluginFactory.h | 31 +- include/proxy/http/remap/RemapConfig.h | 18 +- include/proxy/http/remap/RemapPluginInfo.h | 30 +- include/proxy/http/remap/RemapPlugins.h | 12 +- include/proxy/http/remap/RemapProcessor.h | 2 +- include/proxy/http/remap/UrlMapping.h | 86 ++- include/proxy/http/remap/UrlMappingPathIndex.h | 6 +- include/proxy/http/remap/UrlRewrite.h | 49 +- include/proxy/http2/HPACK.h | 12 +- include/proxy/http2/HTTP2.h | 90 +-- include/proxy/http2/Http2ClientSession.h | 26 +- include/proxy/http2/Http2CommonSession.h | 60 +- include/proxy/http2/Http2ConnectionState.h | 133 ++-- include/proxy/http2/Http2DependencyTree.h | 62 +- include/proxy/http2/Http2Frame.h | 18 +- include/proxy/http2/Http2ServerSession.h | 24 +- include/proxy/http2/Http2SessionAccept.h | 2 +- include/proxy/http2/Http2Stream.h | 108 +-- include/proxy/http3/Http09App.h | 2 +- include/proxy/http3/Http3.h | 2 +- include/proxy/http3/Http3App.h | 14 +- include/proxy/http3/Http3Config.h | 6 +- include/proxy/http3/Http3DataFramer.h | 4 +- include/proxy/http3/Http3Frame.h | 54 +- include/proxy/http3/Http3FrameCounter.h | 4 +- include/proxy/http3/Http3FrameDispatcher.h | 8 +- include/proxy/http3/Http3FrameGenerator.h | 2 +- include/proxy/http3/Http3FrameHandler.h | 6 +- include/proxy/http3/Http3HeaderFramer.h | 26 +- include/proxy/http3/Http3HeaderVIOAdaptor.h | 16 +- include/proxy/http3/Http3ProtocolEnforcer.h | 4 +- include/proxy/http3/Http3Session.h | 38 +- include/proxy/http3/Http3SessionAccept.h | 2 +- include/proxy/http3/Http3SettingsFramer.h | 6 +- include/proxy/http3/Http3SettingsHandler.h | 4 +- include/proxy/http3/Http3StreamDataVIOAdaptor.h | 8 +- include/proxy/http3/Http3Transaction.h | 56 +- include/proxy/http3/Http3Types.h | 6 +- include/proxy/http3/QPACK.h | 58 +- include/proxy/logging/Log.h | 28 +- include/proxy/logging/LogAccess.h | 96 +-- include/proxy/logging/LogBuffer.h | 38 +- include/proxy/logging/LogConfig.h | 42 +- include/proxy/logging/LogField.h | 64 +- include/proxy/logging/LogFieldAliasMap.h | 16 +- include/proxy/logging/LogFile.h | 32 +- include/proxy/logging/LogFilter.h | 36 +- include/proxy/logging/LogFormat.h | 40 +- include/proxy/logging/LogObject.h | 54 +- include/proxy/logging/LogUtils.h | 24 +- include/proxy/logging/RolledLogDeleter.h | 4 +- include/proxy/shared/DiagsConfig.h | 4 +- include/records/RecCore.h | 12 +- include/records/RecDefs.h | 20 +- include/records/RecHttp.h | 22 +- include/records/RecMutex.h | 4 +- include/records/RecProcess.h | 6 +- include/records/RecordsConfig.h | 21 +- include/shared/rpc/IPCSocketClient.h | 2 +- include/shared/rpc/RPCRequests.h | 52 +- include/ts/InkAPIPrivateIOCore.h | 24 +- include/ts/apidefs.h.in | 62 +- include/ts/remap.h | 10 +- include/ts/ts.h | 274 +++---- include/tscore/AcidPtr.h | 2 +- include/tscore/Allocator.h | 12 +- include/tscore/Arena.h | 24 +- include/tscore/ArgParser.h | 2 +- include/tscore/AtomicBit.h | 4 +- include/tscore/BaseLogFile.h | 36 +- include/tscore/ConsistentHash.h | 8 +- include/tscore/ContFlags.h | 6 +- include/tscore/CryptoHash.h | 4 +- include/tscore/Diags.h | 12 +- include/tscore/DiagsTypes.h | 22 +- include/tscore/EnumDescriptor.h | 4 +- include/tscore/EventNotify.h | 6 +- include/tscore/Extendible.h | 78 +- include/tscore/FrequencyCounter.h | 4 +- include/tscore/HKDF.h | 2 +- include/tscore/HTTPVersion.h | 4 +- include/tscore/Hash.h | 10 +- include/tscore/HashFNV.h | 8 +- include/tscore/HashSip.h | 28 +- include/tscore/History.h | 4 +- include/tscore/HostLookup.h | 40 +- include/tscore/JeMiAllocator.h | 8 +- include/tscore/List.h | 16 +- include/tscore/MMH.h | 6 +- include/tscore/MatcherUtils.h | 18 +- include/tscore/NumericType.h | 4 +- include/tscore/ParseRules.h | 18 +- include/tscore/PluginUserArgs.h | 10 +- include/tscore/PriorityQueue.h | 18 +- include/tscore/Ptr.h | 25 +- include/tscore/Regression.h | 38 +- include/tscore/Result.h | 2 +- include/tscore/SimpleTokenizer.h | 10 +- include/tscore/TestBox.h | 10 +- include/tscore/TextBuffer.h | 10 +- include/tscore/Tokenizer.h | 24 +- include/tscore/Trie.h | 12 +- include/tscore/TsBuffer.h | 18 +- include/tscore/Version.h | 6 +- include/tscore/hugepages.h | 8 +- include/tscore/ink_aiocb.h | 2 +- include/tscore/ink_align.h | 16 +- include/tscore/ink_args.h | 36 +- include/tscore/ink_cap.h | 4 +- include/tscore/ink_defs.h | 3 +- include/tscore/ink_hrtime.h | 4 +- include/tscore/ink_inet.h | 112 +-- include/tscore/ink_llqueue.h | 20 +- include/tscore/ink_lockfile.h | 2 +- include/tscore/ink_memory.h | 11 +- include/tscore/ink_queue.h | 42 +- include/tscore/ink_rand.h | 6 +- include/tscore/ink_resolver.h | 54 +- include/tscore/ink_resource.h | 6 +- include/tscore/ink_sock.h | 2 +- include/tscore/ink_string++.h | 32 +- include/tscore/ink_string.h | 2 +- include/tscore/ink_sys_control.h | 2 +- include/tscore/ink_thread.h | 12 +- include/tscore/ink_time.h | 4 +- include/tscore/ink_uuid.h | 8 +- include/tscpp/api/Async.h | 4 +- include/tscpp/api/Cleanup.h | 2 +- include/tscpp/api/Plugin.h | 2 +- include/tscpp/api/RemapPlugin.h | 8 +- include/tscpp/api/Request.h | 4 +- include/tscpp/api/Response.h | 4 +- include/tscpp/api/TransformationPlugin.h | 4 +- include/tscpp/api/Url.h | 4 +- include/tsutil/Bravo.h | 24 +- include/tsutil/DbgCtl.h | 2 +- include/tsutil/DenseThreadId.h | 8 +- include/tsutil/Histogram.h | 2 +- include/tsutil/LocalBuffer.h | 6 +- include/tsutil/Metrics.h | 170 +++-- include/tsutil/PostScript.h | 2 +- include/tsutil/Regex.h | 60 +- include/tsutil/SourceLocation.h | 4 +- include/tsutil/Strerror.h | 2 +- include/tsutil/YamlCfg.h | 4 +- include/tsutil/ts_unit_parser.h | 8 +- lib/swoc/CMakeLists.txt | 2 +- lib/swoc/include/swoc/Lexicon.h | 3 +- lib/swoc/include/swoc/swoc_ip_util.h | 2 +- lib/swoc/include/swoc/swoc_version.h | 4 +- lib/swoc/unit_tests/ex_bw_format.cc | 2 - lib/swoc/unit_tests/test_TextView.cc | 3 - lib/swoc/unit_tests/test_bw_format.cc | 1 - lib/swoc/unit_tests/test_ip.cc | 1 - lib/swoc/unit_tests/test_range.cc | 1 - plugins/authproxy/CMakeLists.txt | 1 + plugins/authproxy/authproxy.cc | 94 +-- plugins/authproxy/utils.cc | 14 +- plugins/authproxy/utils.h | 4 +- plugins/background_fetch/CMakeLists.txt | 3 +- plugins/background_fetch/background_fetch.cc | 50 +- plugins/background_fetch/configs.cc | 4 +- plugins/background_fetch/configs.h | 6 +- plugins/background_fetch/headers.cc | 14 +- plugins/background_fetch/headers.h | 2 +- plugins/background_fetch/rules.cc | 8 +- plugins/cache_promote/cache_promote.cc | 8 +- plugins/cache_promote/chance_policy.h | 6 +- plugins/cache_promote/configs.cc | 6 +- plugins/cache_promote/configs.h | 2 +- plugins/cache_promote/lru_policy.cc | 30 +- plugins/cache_promote/lru_policy.h | 12 +- plugins/cache_promote/policy.cc | 2 +- plugins/cache_promote/policy.h | 20 +- plugins/cache_promote/policy_manager.h | 2 +- plugins/cache_range_requests/CMakeLists.txt | 1 + .../cache_range_requests/cache_range_requests.cc | 80 +-- plugins/cachekey/CMakeLists.txt | 1 + plugins/cachekey/cachekey.cc | 60 +- plugins/cachekey/cachekey.h | 16 +- plugins/cachekey/configs.cc | 12 +- plugins/cachekey/configs.h | 38 +- plugins/cachekey/pattern.cc | 4 +- plugins/cachekey/pattern.h | 10 +- plugins/certifier/certifier.cc | 78 +- plugins/compress/CMakeLists.txt | 1 + plugins/compress/compress.cc | 81 +-- plugins/compress/configuration.cc | 6 +- plugins/compress/configuration.h | 18 +- plugins/compress/misc.cc | 14 +- plugins/compress/misc.h | 44 +- plugins/conf_remap/CMakeLists.txt | 1 + plugins/conf_remap/conf_remap.cc | 20 +- plugins/escalate/CMakeLists.txt | 1 + plugins/escalate/escalate.cc | 20 +- plugins/esi/CMakeLists.txt | 2 + plugins/esi/combo_handler.cc | 168 ++--- plugins/esi/common/Attribute.h | 4 +- plugins/esi/common/DocNode.cc | 4 +- plugins/esi/common/DocNode.h | 4 +- plugins/esi/common/HttpHeader.h | 4 +- plugins/esi/common/Utils.cc | 16 +- plugins/esi/common/gzip.cc | 18 +- plugins/esi/common/gzip.h | 2 +- plugins/esi/esi.cc | 206 +++--- plugins/esi/fetcher/HttpDataFetcherImpl.cc | 18 +- plugins/esi/fetcher/HttpDataFetcherImpl.h | 28 +- plugins/esi/lib/EsiGunzip.cc | 4 +- plugins/esi/lib/EsiGunzip.h | 4 +- plugins/esi/lib/EsiGzip.cc | 4 +- plugins/esi/lib/EsiGzip.h | 4 +- plugins/esi/lib/EsiParser.cc | 46 +- plugins/esi/lib/EsiParser.h | 14 +- plugins/esi/lib/EsiProcessor.cc | 48 +- plugins/esi/lib/EsiProcessor.h | 38 +- plugins/esi/lib/Expression.cc | 20 +- plugins/esi/lib/Expression.h | 6 +- plugins/esi/lib/HandlerManager.h | 4 +- plugins/esi/lib/SpecialIncludeHandler.h | 6 +- plugins/esi/lib/Stats.cc | 4 +- plugins/esi/lib/Stats.h | 2 +- plugins/esi/lib/Variables.cc | 16 +- plugins/esi/lib/Variables.h | 32 +- plugins/esi/serverIntercept.cc | 42 +- plugins/esi/test/StubIncludeHandler.cc | 10 +- plugins/esi/test/StubIncludeHandler.h | 8 +- plugins/esi/test/TestHttpDataFetcher.h | 4 +- plugins/esi/test/docnode_test.cc | 72 +- plugins/esi/test/gzip_test.cc | 4 +- plugins/esi/test/parser_test.cc | 270 +++---- plugins/esi/test/print_funcs.cc | 4 +- plugins/esi/test/processor_test.cc | 234 +++--- plugins/esi/test/sampleProb.cc | 8 +- plugins/esi/test/utils_test.cc | 4 +- plugins/esi/test/vars_test.cc | 24 +- plugins/experimental/access_control/CMakeLists.txt | 4 +- .../experimental/access_control/access_control.cc | 24 +- .../experimental/access_control/access_control.h | 56 +- plugins/experimental/access_control/common.h | 2 +- plugins/experimental/access_control/config.cc | 12 +- plugins/experimental/access_control/config.h | 14 +- plugins/experimental/access_control/headers.cc | 28 +- plugins/experimental/access_control/headers.h | 4 +- plugins/experimental/access_control/pattern.cc | 4 +- plugins/experimental/access_control/pattern.h | 26 +- plugins/experimental/access_control/plugin.cc | 74 +- .../unit_tests/test_access_control.cc | 8 +- .../access_control/unit_tests/test_utils.cc | 58 +- plugins/experimental/access_control/utils.cc | 30 +- plugins/experimental/access_control/utils.h | 2 +- plugins/experimental/block_errors/block_errors.cc | 36 +- plugins/experimental/cache_fill/CMakeLists.txt | 2 + .../experimental/cache_fill/background_fetch.cc | 24 +- plugins/experimental/cache_fill/background_fetch.h | 22 +- plugins/experimental/cache_fill/cache_fill.cc | 2 +- .../cert_reporting_tool/cert_reporting_tool.cc | 14 +- plugins/experimental/cookie_remap/CMakeLists.txt | 2 + plugins/experimental/cookie_remap/cookie_remap.cc | 92 +-- plugins/experimental/cookie_remap/cookiejar.cc | 4 +- plugins/experimental/cookie_remap/cookiejar.h | 4 +- plugins/experimental/cookie_remap/hash.cc | 2 +- plugins/experimental/cookie_remap/strip.cc | 16 +- .../experimental/cookie_remap/test_cookiejar.cc | 12 +- .../custom_redirect/custom_redirect.cc | 22 +- plugins/experimental/fq_pacing/CMakeLists.txt | 1 + plugins/experimental/fq_pacing/fq_pacing.cc | 36 +- plugins/experimental/geoip_acl/CMakeLists.txt | 1 + plugins/experimental/geoip_acl/acl.cc | 14 +- plugins/experimental/geoip_acl/acl.h | 18 +- plugins/experimental/header_freq/header_freq.cc | 18 +- plugins/experimental/hook-trace/hook-trace.cc | 6 +- plugins/experimental/http_stats/CMakeLists.txt | 1 + plugins/experimental/http_stats/http_stats.cc | 56 +- plugins/experimental/icap/icap_plugin.cc | 114 +-- plugins/experimental/inliner/ats-inliner.cc | 6 +- plugins/experimental/inliner/cache-handler.h | 32 +- plugins/experimental/inliner/cache.cc | 2 +- plugins/experimental/inliner/cache.h | 6 +- plugins/experimental/inliner/chunk-decoder.cc | 2 +- plugins/experimental/inliner/chunk-decoder.h | 6 +- plugins/experimental/inliner/fetcher.cc | 6 +- plugins/experimental/inliner/fetcher.h | 30 +- plugins/experimental/inliner/html-parser.h | 12 +- plugins/experimental/inliner/inliner-handler.cc | 6 +- plugins/experimental/inliner/inliner-handler.h | 8 +- plugins/experimental/inliner/png.h | 10 +- plugins/experimental/inliner/ts.h | 68 +- plugins/experimental/inliner/vconnection.h | 4 +- plugins/experimental/magick/CMakeLists.txt | 2 +- .../magick/image_magic_dlopen_leak_suppression.txt | 21 + plugins/experimental/magick/magick.cc | 36 +- plugins/experimental/maxmind_acl/CMakeLists.txt | 4 +- plugins/experimental/maxmind_acl/mmdb.cc | 28 +- plugins/experimental/maxmind_acl/mmdb.h | 26 +- plugins/experimental/memcache/protocol_binary.h | 20 +- plugins/experimental/memcache/tsmemcache.cc | 22 +- plugins/experimental/memcache/tsmemcache.h | 74 +- .../experimental/memory_profile/memory_profile.cc | 2 +- plugins/experimental/money_trace/CMakeLists.txt | 1 + plugins/experimental/money_trace/money_trace.cc | 34 +- plugins/experimental/mp4/CMakeLists.txt | 1 + plugins/experimental/mp4/mp4.cc | 74 +- plugins/experimental/mp4/mp4_common.h | 22 +- plugins/experimental/mp4/mp4_meta.cc | 198 +++--- plugins/experimental/mp4/mp4_meta.h | 34 +- .../otel_tracer}/CMakeLists.txt | 5 +- plugins/experimental/otel_tracer/otel_tracer.cc | 70 +- plugins/experimental/otel_tracer/tracer_common.h | 6 +- plugins/experimental/rate_limit/CMakeLists.txt | 1 + plugins/experimental/rate_limit/ip_reputation.cc | 4 +- plugins/experimental/rate_limit/ip_reputation.h | 24 +- plugins/experimental/rate_limit/iprep_simu.cc | 21 +- plugins/experimental/rate_limit/limiter.h | 18 +- plugins/experimental/rate_limit/rate_limit.cc | 24 +- plugins/experimental/rate_limit/sni_limiter.cc | 8 +- plugins/experimental/rate_limit/sni_limiter.h | 6 +- plugins/experimental/rate_limit/sni_selector.h | 21 +- plugins/experimental/rate_limit/txn_limiter.cc | 50 +- plugins/experimental/rate_limit/txn_limiter.h | 21 +- plugins/experimental/rate_limit/utilities.cc | 26 +- plugins/experimental/rate_limit/utilities.h | 4 +- plugins/experimental/sslheaders/CMakeLists.txt | 6 +- plugins/experimental/sslheaders/expand.cc | 2 +- plugins/experimental/sslheaders/sslheaders.cc | 26 +- plugins/experimental/sslheaders/sslheaders.h | 6 +- .../sslheaders/unit_tests/test_sslheaders.cc | 10 +- plugins/experimental/sslheaders/util.cc | 2 +- plugins/experimental/stale_response/BodyData.h | 10 +- plugins/experimental/stale_response/CMakeLists.txt | 1 + plugins/experimental/stale_response/CacheUpdate.cc | 42 +- plugins/experimental/stale_response/CacheUpdate.h | 6 +- plugins/experimental/stale_response/MurmurHash3.cc | 8 +- .../experimental/stale_response/ServerIntercept.cc | 32 +- .../experimental/stale_response/UrlComponents.h | 6 +- .../experimental/stale_response/stale_response.cc | 53 +- .../experimental/stale_response/stale_response.h | 93 +-- .../stale_response/unit_tests/test_BodyData.cc | 4 +- plugins/experimental/stek_share/common.h | 4 +- plugins/experimental/stek_share/log_store.cc | 24 +- plugins/experimental/stek_share/log_store.h | 4 +- plugins/experimental/stek_share/state_machine.h | 26 +- plugins/experimental/stek_share/state_manager.h | 14 +- plugins/experimental/stek_share/stek_share.cc | 38 +- plugins/experimental/stek_share/stek_share.h | 6 +- plugins/experimental/stek_share/stek_utils.cc | 2 +- .../experimental/stream_editor/stream_editor.cc | 110 +-- plugins/experimental/system_stats/system_stats.cc | 6 +- plugins/experimental/tls_bridge/CMakeLists.txt | 3 +- plugins/experimental/tls_bridge/tls_bridge.cc | 52 +- plugins/experimental/txn_box/plugin/CMakeLists.txt | 3 + .../txn_box/plugin/include/txn_box/Comparison.h | 2 +- .../txn_box/plugin/include/txn_box/Config.h | 20 +- .../txn_box/plugin/include/txn_box/Context.h | 38 +- .../txn_box/plugin/include/txn_box/Directive.h | 12 +- .../txn_box/plugin/include/txn_box/Expr.h | 8 +- .../txn_box/plugin/include/txn_box/Extractor.h | 6 +- .../txn_box/plugin/include/txn_box/FeatureGroup.h | 10 +- .../txn_box/plugin/include/txn_box/Rxp.h | 8 +- .../txn_box/plugin/include/txn_box/accl_util.h | 79 +- .../txn_box/plugin/include/txn_box/common.h | 28 +- .../txn_box/plugin/include/txn_box/ts_util.h | 30 +- .../experimental/txn_box/plugin/src/Comparison.cc | 112 +-- plugins/experimental/txn_box/plugin/src/Config.cc | 44 +- plugins/experimental/txn_box/plugin/src/Context.cc | 12 +- plugins/experimental/txn_box/plugin/src/Ex_Base.cc | 62 +- plugins/experimental/txn_box/plugin/src/Ex_HTTP.cc | 156 ++-- plugins/experimental/txn_box/plugin/src/Ex_Ssn.cc | 80 +-- .../experimental/txn_box/plugin/src/Extractor.cc | 20 +- .../experimental/txn_box/plugin/src/Machinery.cc | 286 ++++---- .../experimental/txn_box/plugin/src/Modifier.cc | 60 +- plugins/experimental/txn_box/plugin/src/Rxp.cc | 10 +- .../experimental/txn_box/plugin/src/ex_tcp_info.cc | 12 +- .../experimental/txn_box/plugin/src/ip_space.cc | 90 +-- plugins/experimental/txn_box/plugin/src/query.cc | 99 ++- plugins/experimental/txn_box/plugin/src/stats.cc | 32 +- .../experimental/txn_box/plugin/src/text_block.cc | 40 +- plugins/experimental/txn_box/plugin/src/ts_util.cc | 94 +-- plugins/experimental/txn_box/plugin/src/txn_box.cc | 24 +- .../txn_box/plugin/src/txn_box_remap.cc | 8 +- plugins/experimental/txn_box/plugin/src/util.cc | 16 +- .../experimental/txn_box/plugin/src/yaml_util.cc | 2 +- .../txn_box/unit_tests/test_accl_utils.cc | 28 +- plugins/experimental/uri_signing/CMakeLists.txt | 2 + plugins/experimental/uri_signing/config.cc | 38 +- plugins/experimental/uri_signing/config.h | 20 +- plugins/experimental/uri_signing/cookie.cc | 4 +- plugins/experimental/uri_signing/jwt.cc | 30 +- plugins/experimental/uri_signing/jwt.h | 26 +- plugins/experimental/uri_signing/normalize.cc | 22 +- plugins/experimental/uri_signing/parse.cc | 8 +- plugins/experimental/uri_signing/timing.cc | 2 +- plugins/experimental/uri_signing/timing.h | 2 +- .../uri_signing/unit_tests/uri_signing_test.cc | 20 +- plugins/experimental/uri_signing/uri_signing.cc | 54 +- plugins/experimental/url_sig/CMakeLists.txt | 1 + plugins/experimental/url_sig/url_sig.cc | 92 +-- .../{tls_bridge => wasm}/CMakeLists.txt | 7 +- plugins/experimental/wasm/ats_context.cc | 372 +++++----- plugins/experimental/wasm/ats_context.h | 52 +- plugins/experimental/wasm/ats_wasm.cc | 2 +- plugins/experimental/wasm/ats_wasm.h | 12 +- .../experimental/wasm/examples/cpp/myproject.cc | 2 +- .../wasm/examples/transform/transform.cc | 4 +- .../{stale_response => wasm/lib}/CMakeLists.txt | 37 +- plugins/experimental/wasm/wasm_main.cc | 68 +- plugins/generator/CMakeLists.txt | 1 + plugins/generator/generator.cc | 58 +- plugins/header_rewrite/CMakeLists.txt | 3 +- plugins/header_rewrite/condition.h | 6 +- plugins/header_rewrite/conditions.cc | 80 +-- plugins/header_rewrite/conditions.h | 40 +- plugins/header_rewrite/conditions_geo.h | 4 +- plugins/header_rewrite/conditions_geo_geoip.cc | 4 +- plugins/header_rewrite/conditions_geo_maxmind.cc | 4 +- plugins/header_rewrite/factory.cc | 6 +- plugins/header_rewrite/factory.h | 2 +- plugins/header_rewrite/header_rewrite.cc | 68 +- plugins/header_rewrite/lulu.h | 11 +- plugins/header_rewrite/matcher.h | 10 +- plugins/header_rewrite/operator.h | 4 +- plugins/header_rewrite/operators.cc | 115 ++- plugins/header_rewrite/operators.h | 54 +- plugins/header_rewrite/parser.cc | 22 +- plugins/header_rewrite/parser.h | 28 +- plugins/header_rewrite/regex_helper.cc | 2 +- plugins/header_rewrite/regex_helper.h | 8 +- plugins/header_rewrite/resources.h | 18 +- plugins/header_rewrite/ruleset.cc | 2 +- plugins/header_rewrite/ruleset.h | 14 +- plugins/header_rewrite/statement.cc | 2 +- plugins/header_rewrite/statement.h | 8 +- plugins/header_rewrite/value.cc | 3 +- plugins/header_rewrite/value.h | 6 +- plugins/healthchecks/healthchecks.cc | 86 +-- plugins/ja3_fingerprint/CMakeLists.txt | 1 + plugins/ja3_fingerprint/ja3_fingerprint.cc | 44 +- plugins/libloader/libloader.cc | 8 +- plugins/lua/CMakeLists.txt | 1 + plugins/lua/ts_lua.cc | 66 +- plugins/lua/ts_lua_cached_response.cc | 34 +- plugins/lua/ts_lua_client_request.cc | 134 ++-- plugins/lua/ts_lua_client_response.cc | 67 +- plugins/lua/ts_lua_common.h | 38 +- plugins/lua/ts_lua_context.cc | 4 +- plugins/lua/ts_lua_coroutine.cc | 2 +- plugins/lua/ts_lua_coroutine.h | 36 +- plugins/lua/ts_lua_crypto.cc | 72 +- plugins/lua/ts_lua_fetch.cc | 96 +-- plugins/lua/ts_lua_fetch.h | 14 +- plugins/lua/ts_lua_hook.cc | 4 +- plugins/lua/ts_lua_http.cc | 130 ++-- plugins/lua/ts_lua_http_cntl.cc | 8 +- plugins/lua/ts_lua_http_config.cc | 44 +- plugins/lua/ts_lua_http_intercept.cc | 58 +- plugins/lua/ts_lua_http_milestone.cc | 6 +- plugins/lua/ts_lua_http_txn_info.cc | 2 +- plugins/lua/ts_lua_io.cc | 4 +- plugins/lua/ts_lua_log.cc | 8 +- plugins/lua/ts_lua_mgmt.cc | 16 +- plugins/lua/ts_lua_misc.cc | 66 +- plugins/lua/ts_lua_package.cc | 50 +- plugins/lua/ts_lua_remap.cc | 16 +- plugins/lua/ts_lua_server_request.cc | 134 ++-- plugins/lua/ts_lua_server_response.cc | 46 +- plugins/lua/ts_lua_stat.cc | 14 +- plugins/lua/ts_lua_transform.cc | 42 +- plugins/lua/ts_lua_util.cc | 90 +-- plugins/lua/ts_lua_util.h | 26 +- plugins/lua/ts_lua_vconn.cc | 8 +- plugins/multiplexer/CMakeLists.txt | 2 + plugins/multiplexer/ats-multiplexer.cc | 4 +- plugins/multiplexer/chunk-decoder.cc | 2 +- plugins/multiplexer/chunk-decoder.h | 8 +- plugins/multiplexer/dispatch.cc | 26 +- plugins/multiplexer/dispatch.h | 6 +- plugins/multiplexer/fetcher.cc | 6 +- plugins/multiplexer/fetcher.h | 30 +- plugins/multiplexer/original-request.cc | 4 +- plugins/multiplexer/original-request.h | 8 +- plugins/multiplexer/post.h | 2 +- plugins/multiplexer/ts.h | 4 +- plugins/prefetch/CMakeLists.txt | 2 + plugins/prefetch/configs.cc | 2 +- plugins/prefetch/configs.h | 28 +- plugins/prefetch/evaluate.cc | 18 +- plugins/prefetch/fetch.cc | 26 +- plugins/prefetch/fetch.h | 56 +- plugins/prefetch/fetch_policy.cc | 2 +- plugins/prefetch/fetch_policy.h | 12 +- plugins/prefetch/fetch_policy_lru.cc | 2 +- plugins/prefetch/fetch_policy_lru.h | 14 +- plugins/prefetch/fetch_policy_simple.h | 10 +- plugins/prefetch/headers.cc | 28 +- plugins/prefetch/headers.h | 4 +- plugins/prefetch/pattern.cc | 4 +- plugins/prefetch/pattern.h | 12 +- plugins/prefetch/plugin.cc | 96 +-- plugins/prefetch/test/test_evaluate.cc | 14 +- plugins/regex_remap/CMakeLists.txt | 2 + plugins/regex_remap/regex_remap.cc | 108 +-- plugins/regex_revalidate/regex_revalidate.cc | 102 +-- plugins/remap_purge/CMakeLists.txt | 2 + plugins/remap_purge/remap_purge.cc | 40 +- plugins/remap_stats/CMakeLists.txt | 1 - plugins/remap_stats/remap_stats.cc | 28 +- plugins/s3_auth/CMakeLists.txt | 4 +- plugins/s3_auth/aws_auth_v4.cc | 48 +- plugins/s3_auth/aws_auth_v4.h | 36 +- plugins/s3_auth/aws_auth_v4_wrap.h | 8 +- plugins/s3_auth/s3_auth.cc | 96 +-- plugins/s3_auth/unit_tests/test_aws_auth_v4.cc | 94 +-- plugins/s3_auth/unit_tests/test_aws_auth_v4.h | 12 +- plugins/server_push_preload/server_push_preload.cc | 18 +- plugins/slice/CMakeLists.txt | 4 +- plugins/slice/Config.cc | 14 +- plugins/slice/Config.h | 16 +- plugins/slice/Data.h | 10 +- plugins/slice/HttpHeader.cc | 22 +- plugins/slice/HttpHeader.h | 12 +- plugins/slice/Range.cc | 26 +- plugins/slice/Stage.h | 4 +- plugins/slice/client.cc | 16 +- plugins/slice/prefetch.cc | 12 +- plugins/slice/prefetch.h | 6 +- plugins/slice/response.cc | 16 +- plugins/slice/server.cc | 66 +- plugins/slice/slice.cc | 20 +- plugins/slice/slice_test.cc | 8 +- plugins/slice/transfer.cc | 10 +- plugins/slice/unit-tests/slice_test.cc | 8 +- plugins/slice/unit-tests/test_config.cc | 16 +- plugins/slice/unit-tests/test_content_range.cc | 4 +- plugins/slice/util.cc | 8 +- plugins/statichit/CMakeLists.txt | 1 + plugins/statichit/statichit.cc | 72 +- plugins/stats_over_http/stats_over_http.cc | 88 +-- plugins/tcpinfo/tcpinfo.cc | 56 +- plugins/traffic_dump/session_data.cc | 36 +- plugins/traffic_dump/traffic_dump.cc | 18 +- plugins/traffic_dump/transaction_data.cc | 32 +- plugins/webp_transform/CMakeLists.txt | 2 +- plugins/webp_transform/ImageTransform.cc | 12 +- .../image_magic_dlopen_leak_suppression.txt | 21 + plugins/xdebug/xdebug.cc | 80 +-- plugins/xdebug/xdebug_headers.cc | 14 +- plugins/xdebug/xdebug_transforms.cc | 2 +- src/api/APIHooks.cc | 4 +- src/api/ConfigUpdateCbTable.cc | 6 +- src/api/InkAPI.cc | 505 ++++++------- src/api/InkAPIInternal.cc | 15 +- src/api/InkAPITest.cc | 792 ++++++++++----------- src/api/InkIOCoreAPI.cc | 26 +- src/cripts/Connections.cc | 24 +- src/cripts/Crypto.cc | 14 +- src/cripts/Geo.cc | 2 +- src/cripts/Headers.cc | 20 +- src/cripts/Instance.cc | 2 +- src/cripts/Lulu.cc | 12 +- src/cripts/Matcher.cc | 14 +- src/cripts/Plugins.cc | 15 +- src/cripts/UUID.cc | 6 +- src/cripts/Urls.cc | 16 +- src/iocore/aio/AIO.cc | 32 +- src/iocore/aio/AIO_fault_injection.cc | 16 +- src/iocore/aio/P_AIO.h | 22 +- src/iocore/aio/test_AIO.cc | 65 +- src/iocore/cache/Cache.cc | 198 +++--- src/iocore/cache/CacheDir.cc | 82 +-- src/iocore/cache/CacheDisk.cc | 10 +- src/iocore/cache/CacheEvacuateDocVC.cc | 6 +- {include => src}/iocore/cache/CacheEvacuateDocVC.h | 2 +- src/iocore/cache/CacheHosting.cc | 76 +- src/iocore/cache/CacheHttp.cc | 10 +- src/iocore/cache/CacheRead.cc | 54 +- src/iocore/cache/CacheTest.cc | 56 +- src/iocore/cache/CacheVC.cc | 40 +- src/iocore/cache/CacheWrite.cc | 70 +- src/iocore/cache/HttpTransactCache.cc | 262 +++---- src/iocore/cache/P_CacheArray.h | 18 +- src/iocore/cache/P_CacheDir.h | 110 +-- src/iocore/cache/P_CacheDisk.h | 92 +-- src/iocore/cache/P_CacheDoc.h | 6 +- src/iocore/cache/P_CacheHosting.h | 58 +- src/iocore/cache/P_CacheHttp.h | 18 +- src/iocore/cache/P_CacheInternal.h | 42 +- src/iocore/cache/P_CacheStats.h | 24 +- src/iocore/cache/P_CacheTest.h | 64 +- src/iocore/cache/P_CacheVol.h | 168 ++--- src/iocore/cache/P_RamCache.h | 8 +- src/iocore/cache/RamCacheCLFUS.cc | 74 +- src/iocore/cache/RamCacheLRU.cc | 58 +- src/iocore/cache/Store.cc | 24 +- src/iocore/cache/Stripe.cc | 68 +- src/iocore/cache/unit_tests/CacheTestHandler.h | 6 +- src/iocore/cache/unit_tests/main.cc | 23 +- src/iocore/cache/unit_tests/main.h | 32 +- src/iocore/cache/unit_tests/stub.cc | 2 +- .../cache/unit_tests/test_Alternate_L_to_S.cc | 14 +- .../unit_tests/test_Alternate_L_to_S_remove_L.cc | 22 +- .../unit_tests/test_Alternate_L_to_S_remove_S.cc | 22 +- .../cache/unit_tests/test_Alternate_S_to_L.cc | 14 +- .../unit_tests/test_Alternate_S_to_L_remove_L.cc | 22 +- .../unit_tests/test_Alternate_S_to_L_remove_S.cc | 22 +- src/iocore/cache/unit_tests/test_Cache.cc | 4 +- src/iocore/cache/unit_tests/test_CacheDir.cc | 8 +- src/iocore/cache/unit_tests/test_CacheVol.cc | 51 +- src/iocore/cache/unit_tests/test_Disk_Failure.cc | 4 +- .../cache/unit_tests/test_Disk_Init_Failure.cc | 6 +- .../cache/unit_tests/test_Populated_Cache.cc | 4 +- .../test_Populated_Cache_Disk_Failure.cc | 4 +- src/iocore/cache/unit_tests/test_RWW.cc | 24 +- src/iocore/cache/unit_tests/test_Stripe.cc | 164 ++++- src/iocore/cache/unit_tests/test_Update_L_to_S.cc | 10 +- src/iocore/cache/unit_tests/test_Update_S_to_L.cc | 10 +- src/iocore/cache/unit_tests/test_Update_header.cc | 12 +- src/iocore/dns/DNS.cc | 134 ++-- src/iocore/dns/DNSConnection.cc | 10 +- src/iocore/dns/DNSEventIO.cc | 1 + src/iocore/dns/P_DNSConnection.h | 14 +- src/iocore/dns/P_DNSProcessor.h | 124 ++-- src/iocore/dns/P_SplitDNSProcessor.h | 12 +- src/iocore/dns/SplitDNS.cc | 38 +- src/iocore/dns/test_P_DNS.cc | 6 +- src/iocore/eventsystem/ConfigProcessor.cc | 18 +- src/iocore/eventsystem/EventSystem.cc | 4 +- src/iocore/eventsystem/IOBuffer.cc | 32 +- src/iocore/eventsystem/MIOBufferWriter.cc | 2 +- src/iocore/eventsystem/PQ-List.cc | 2 +- src/iocore/eventsystem/P_EventSystem.h | 2 +- src/iocore/eventsystem/P_IOBuffer.h | 22 +- src/iocore/eventsystem/P_UnixEventProcessor.h | 6 +- src/iocore/eventsystem/ProxyAllocator.cc | 8 +- src/iocore/eventsystem/RecProcess.cc | 18 +- src/iocore/eventsystem/RecRawStatsImpl.cc | 2 +- src/iocore/eventsystem/SocketManager.cc | 2 +- src/iocore/eventsystem/Tasks.cc | 2 +- src/iocore/eventsystem/Thread.cc | 13 +- src/iocore/eventsystem/UnixEThread.cc | 2 +- src/iocore/eventsystem/UnixEventProcessor.cc | 40 +- .../eventsystem/unit_tests/test_EventSystem.cc | 2 +- src/iocore/eventsystem/unit_tests/test_IOBuffer.cc | 22 +- .../eventsystem/unit_tests/test_MIOBufferWriter.cc | 8 +- src/iocore/hostdb/HostDB.cc | 150 ++-- src/iocore/hostdb/HostDBInfo.cc | 4 +- src/iocore/hostdb/HostFile.cc | 8 +- src/iocore/hostdb/P_HostDBProcessor.h | 42 +- src/iocore/hostdb/P_RefCountCache.h | 64 +- src/iocore/hostdb/test_HostFile.cc | 2 +- src/iocore/hostdb/test_P_HostDB.cc | 6 +- src/iocore/hostdb/test_RefCountCache.cc | 14 +- src/iocore/io_uring/io_uring.cc | 20 +- src/iocore/io_uring/unit_tests/test_diskIO.cc | 18 +- src/iocore/net/ALPNSupport.cc | 14 +- src/iocore/net/BoringSSLUtils.cc | 6 +- src/iocore/net/Connection.cc | 25 +- src/iocore/net/ConnectionTracker.cc | 42 +- src/iocore/net/EventIO.cc | 9 +- src/iocore/net/Net.cc | 1 - src/iocore/net/NetHandler.cc | 120 ++-- src/iocore/net/NetVCTest.cc | 30 +- src/iocore/net/NetVConnection.cc | 10 +- src/iocore/net/OCSPStapling.cc | 178 ++--- src/iocore/net/P_CompletionUtil.h | 24 +- src/iocore/net/P_Connection.h | 14 +- src/iocore/net/P_Net.h | 26 +- src/iocore/net/P_NetAccept.h | 32 +- src/iocore/net/P_NetVCTest.h | 16 +- src/iocore/net/P_QUICNet.h | 8 +- src/iocore/net/P_QUICNetProcessor.h | 6 +- src/iocore/net/P_QUICNetVConnection.h | 84 +-- src/iocore/net/P_QUICPacketHandler.h | 10 +- src/iocore/net/P_SSLCertLookup.h | 55 +- src/iocore/net/P_SSLConfig.h | 104 +-- src/iocore/net/P_SSLNetAccept.h | 2 +- src/iocore/net/P_SSLNetVConnection.h | 64 +- src/iocore/net/P_SSLNextProtocolAccept.h | 8 +- src/iocore/net/P_SSLNextProtocolSet.h | 4 +- src/iocore/net/P_SSLSecret.h | 8 +- src/iocore/net/P_SSLUtils.h | 77 +- src/iocore/net/P_Socks.h | 40 +- src/iocore/net/P_UDPConnection.h | 12 +- src/iocore/net/P_UDPIOEvent.h | 16 +- src/iocore/net/P_UDPNet.h | 40 +- src/iocore/net/P_UnixNet.h | 14 +- src/iocore/net/P_UnixNetProcessor.h | 2 +- src/iocore/net/P_UnixNetState.h | 54 -- src/iocore/net/P_UnixNetVConnection.h | 65 +- src/iocore/net/P_UnixPollDescriptor.h | 16 +- src/iocore/net/P_UnixUDPConnection.h | 12 +- src/iocore/net/ProxyProtocol.cc | 56 +- src/iocore/net/QUICMultiCertConfigLoader.cc | 5 +- src/iocore/net/QUICNet.cc | 14 +- src/iocore/net/QUICNetProcessor.cc | 33 +- src/iocore/net/QUICNetVConnection.cc | 107 +-- src/iocore/net/QUICNextProtocolAccept.cc | 12 +- src/iocore/net/QUICPacketHandler.cc | 65 +- src/iocore/net/ReadWriteEventIO.cc | 8 +- src/iocore/net/SNIActionPerformer.cc | 31 +- src/iocore/net/SNIActionPerformer.h | 28 +- src/iocore/net/SSLAPIHooks.cc | 10 +- src/iocore/net/SSLCertLookup.cc | 52 +- src/iocore/net/SSLClientUtils.cc | 41 +- src/iocore/net/SSLConfig.cc | 127 ++-- src/iocore/net/SSLDiags.cc | 12 +- src/iocore/net/SSLDynlock.cc | 19 +- src/iocore/net/SSLDynlock.h | 4 +- src/iocore/net/SSLNetProcessor.cc | 6 +- src/iocore/net/SSLNetVConnection.cc | 177 ++--- src/iocore/net/SSLNextProtocolAccept.cc | 14 +- src/iocore/net/SSLNextProtocolSet.cc | 10 +- src/iocore/net/SSLSNIConfig.cc | 23 +- src/iocore/net/SSLSecret.cc | 38 +- src/iocore/net/SSLSessionCache.cc | 49 +- src/iocore/net/SSLSessionCache.h | 12 +- src/iocore/net/SSLStats.cc | 15 +- src/iocore/net/SSLStats.h | 10 +- src/iocore/net/SSLUtils.cc | 168 ++--- src/iocore/net/Socks.cc | 20 +- src/iocore/net/TLSBasicSupport.cc | 8 +- src/iocore/net/TLSCertSwitchSupport.cc | 17 +- src/iocore/net/TLSEarlyDataSupport.cc | 15 +- src/iocore/net/TLSKeyLogger.cc | 12 +- src/iocore/net/TLSSNISupport.cc | 8 +- src/iocore/net/TLSSessionResumptionSupport.cc | 26 +- src/iocore/net/UDPEventIO.cc | 8 +- src/iocore/net/UnixConnection.cc | 22 +- src/iocore/net/UnixNet.cc | 18 +- src/iocore/net/UnixNetAccept.cc | 54 +- src/iocore/net/UnixNetProcessor.cc | 10 +- src/iocore/net/UnixNetVConnection.cc | 82 ++- src/iocore/net/UnixUDPNet.cc | 178 +++-- src/iocore/net/YamlSNIConfig.cc | 47 +- src/iocore/net/quic/QUICGlobals.cc | 12 +- src/iocore/net/quic/QUICIntUtil.cc | 2 +- src/iocore/net/quic/QUICStream.cc | 4 +- src/iocore/net/quic/QUICStreamManager.cc | 6 +- src/iocore/net/quic/QUICStreamVCAdapter.cc | 12 + src/iocore/net/quic/QUICTransportParameters.cc | 80 +-- src/iocore/net/quic/QUICTypes.cc | 16 +- src/iocore/net/quic/test/test_QUICInvariants.cc | 50 +- src/iocore/net/quic/test/test_QUICTypeUtil.cc | 64 +- src/iocore/net/quic/test_MTHashTable.cc | 2 +- src/iocore/net/test_I_UDPNet.cc | 4 +- src/iocore/net/test_P_Net.cc | 6 +- src/iocore/net/test_certlookup.cc | 22 +- src/iocore/net/unit_tests/test_SSLSNIConfig.cc | 4 +- src/iocore/net/unit_tests/test_YamlSNIConfig.cc | 4 +- src/iocore/net/unit_tests/unit_test_main.cc | 1 - src/iocore/utils/Machine.cc | 10 +- src/iocore/utils/OneWayMultiTunnel.cc | 10 +- src/iocore/utils/OneWayTunnel.cc | 14 +- src/mgmt/config/AddConfigFilesHere.cc | 2 +- src/mgmt/config/FileManager.cc | 16 +- src/mgmt/rpc/config/JsonRPCConfig.cc | 2 +- src/mgmt/rpc/handlers/common/RecordsUtils.cc | 123 +--- .../mgmt/rpc/handlers/common/RecordsUtils.h | 13 - .../mgmt/rpc/handlers/common/convert.h | 2 +- src/mgmt/rpc/handlers/config/Configuration.cc | 11 +- src/mgmt/rpc/handlers/plugins/Plugins.cc | 4 +- src/mgmt/rpc/handlers/records/Records.cc | 8 +- src/mgmt/rpc/handlers/server/Server.cc | 8 +- src/mgmt/rpc/handlers/storage/Storage.cc | 6 +- src/mgmt/rpc/jsonrpc/JsonRPCManager.cc | 23 +- .../rpc/jsonrpc/unit_tests/test_basic_protocol.cc | 30 +- src/mgmt/rpc/server/IPCSocketServer.cc | 6 +- src/mgmt/rpc/server/unit_tests/test_rpcserver.cc | 58 +- src/proxy/CacheControl.cc | 14 +- src/proxy/ControlBase.cc | 98 +-- src/proxy/ControlMatcher.cc | 46 +- src/proxy/FetchSM.cc | 40 +- src/proxy/HostStatus.cc | 40 +- src/proxy/IPAllow.cc | 26 +- src/proxy/ParentConsistentHash.cc | 26 +- src/proxy/ParentRoundRobin.cc | 10 +- src/proxy/ParentSelection.cc | 82 +-- src/proxy/ParentSelectionStrategy.cc | 6 +- src/proxy/Plugin.cc | 28 +- src/proxy/PluginVC.cc | 20 +- src/proxy/ProtocolProbeSessionAccept.cc | 24 +- src/proxy/ProxySession.cc | 1 + src/proxy/RegressionSM.cc | 4 +- src/proxy/ReverseProxy.cc | 4 +- src/proxy/Transform.cc | 16 +- src/proxy/hdrs/HTTP.cc | 78 +- src/proxy/hdrs/HdrHeap.cc | 38 +- src/proxy/hdrs/HdrTSOnly.cc | 4 +- src/proxy/hdrs/HdrToken.cc | 24 +- src/proxy/hdrs/HdrUtils.cc | 4 +- src/proxy/hdrs/HeaderValidator.cc | 18 +- src/proxy/hdrs/HttpCompat.cc | 32 +- src/proxy/hdrs/HuffmanCodec.cc | 14 +- src/proxy/hdrs/MIME.cc | 170 ++--- src/proxy/hdrs/URL.cc | 78 +- src/proxy/hdrs/VersionConverter.cc | 40 +- src/proxy/hdrs/XPACK.cc | 44 +- src/proxy/hdrs/load_http_hdr.cc | 14 +- src/proxy/hdrs/test_urlhash.cc | 8 +- src/proxy/hdrs/unit_tests/test_HdrHeap.cc | 2 +- src/proxy/hdrs/unit_tests/test_HdrUtils.cc | 26 +- src/proxy/hdrs/unit_tests/test_Hdrs.cc | 183 ++--- src/proxy/hdrs/unit_tests/test_Huffmancode.cc | 32 +- src/proxy/hdrs/unit_tests/test_URL.cc | 24 +- src/proxy/hdrs/unit_tests/test_XPACK.cc | 28 +- src/proxy/hdrs/unit_tests/test_mime.cc | 8 +- src/proxy/http/ConnectingEntry.cc | 22 +- src/proxy/http/Http1ClientSession.cc | 37 +- src/proxy/http/Http1ServerSession.cc | 16 +- src/proxy/http/HttpBodyFactory.cc | 183 ++--- src/proxy/http/HttpCacheSM.cc | 60 +- src/proxy/http/HttpConfig.cc | 102 ++- src/proxy/http/HttpProxyServerMain.cc | 26 +- src/proxy/http/HttpSM.cc | 282 ++++---- src/proxy/http/HttpSessionAccept.cc | 16 +- src/proxy/http/HttpSessionManager.cc | 130 ++-- src/proxy/http/HttpTransact.cc | 260 +++---- src/proxy/http/HttpTransactHeaders.cc | 124 ++-- src/proxy/http/HttpTunnel.cc | 127 ++-- src/proxy/http/PreWarmManager.cc | 98 +-- src/proxy/http/RegressionHttpTransact.cc | 24 +- src/proxy/http/TestUrl.cc | 2 +- src/proxy/http/remap/AclFiltering.cc | 6 +- src/proxy/http/remap/CMakeLists.txt | 4 + src/proxy/http/remap/NextHopConsistentHash.cc | 50 +- src/proxy/http/remap/NextHopHealthStatus.cc | 18 +- src/proxy/http/remap/NextHopRoundRobin.cc | 38 +- src/proxy/http/remap/NextHopSelectionStrategy.cc | 16 +- src/proxy/http/remap/NextHopStrategyFactory.cc | 24 +- src/proxy/http/remap/PluginDso.cc | 80 ++- src/proxy/http/remap/PluginFactory.cc | 54 +- src/proxy/http/remap/RemapConfig.cc | 201 +++--- src/proxy/http/remap/RemapPluginInfo.cc | 30 +- src/proxy/http/remap/RemapPlugins.cc | 38 +- src/proxy/http/remap/RemapProcessor.cc | 86 +-- src/proxy/http/remap/UrlMapping.cc | 36 +- src/proxy/http/remap/UrlMappingPathIndex.cc | 31 +- src/proxy/http/remap/UrlRewrite.cc | 169 +++-- src/proxy/http/remap/unit-tests/CMakeLists.txt | 176 +++++ .../http/remap/unit-tests/nexthop_test_stubs.cc | 4 +- .../http/remap/unit-tests/nexthop_test_stubs.h | 4 +- .../http/remap/unit-tests/plugin_testing_common.cc | 4 +- .../http/remap/unit-tests/plugin_testing_common.h | 32 +- .../remap/unit-tests/test_NextHopConsistentHash.cc | 44 +- .../remap/unit-tests/test_NextHopRoundRobin.cc | 33 +- .../unit-tests/test_NextHopStrategyFactory.cc | 10 +- src/proxy/http/remap/unit-tests/test_PluginDso.cc | 28 +- .../http/remap/unit-tests/test_PluginFactory.cc | 102 +-- .../http/remap/unit-tests/test_RemapPlugin.cc | 64 +- src/proxy/http/test_socket_close.cc | 44 +- src/proxy/http/testheaders.cc | 8 +- src/proxy/http/unit_tests/test_HttpTransact.cc | 48 +- src/proxy/http/unit_tests/test_HttpUserAgent.cc | 6 +- .../http/unit_tests/test_error_page_selection.cc | 14 +- src/proxy/http2/HPACK.cc | 66 +- src/proxy/http2/HTTP2.cc | 104 +-- src/proxy/http2/Http2ClientSession.cc | 6 +- src/proxy/http2/Http2CommonSession.cc | 11 +- src/proxy/http2/Http2ConnectionState.cc | 279 +++++--- src/proxy/http2/Http2ServerSession.cc | 21 +- src/proxy/http2/Http2SessionAccept.cc | 4 +- src/proxy/http2/Http2Stream.cc | 6 +- src/proxy/http2/test_HPACK.cc | 50 +- src/proxy/http2/unit_tests/test_HTTP2.cc | 24 +- .../http2/unit_tests/test_HpackIndexingTable.cc | 52 +- .../http2/unit_tests/test_Http2DependencyTree.cc | 32 +- src/proxy/http2/unit_tests/test_Http2Frame.cc | 14 +- src/proxy/http3/Http09App.cc | 8 +- src/proxy/http3/Http3App.cc | 70 +- src/proxy/http3/Http3DataFramer.cc | 2 +- src/proxy/http3/Http3Frame.cc | 52 +- src/proxy/http3/Http3FrameCollector.cc | 2 +- src/proxy/http3/Http3FrameDispatcher.cc | 14 +- src/proxy/http3/Http3HeaderFramer.cc | 2 +- src/proxy/http3/Http3HeaderVIOAdaptor.cc | 6 +- src/proxy/http3/Http3SessionAccept.cc | 4 +- src/proxy/http3/Http3StreamDataVIOAdaptor.cc | 4 +- src/proxy/http3/Http3Transaction.cc | 20 +- src/proxy/http3/QPACK.cc | 200 +++--- src/proxy/http3/test/main_qpack.cc | 6 +- src/proxy/http3/test/test_Http3Frame.cc | 30 +- src/proxy/http3/test/test_Http3FrameDispatcher.cc | 62 +- src/proxy/http3/test/test_QPACK.cc | 63 +- src/proxy/logging/Log.cc | 42 +- src/proxy/logging/LogAccess.cc | 175 ++--- src/proxy/logging/LogAccessTest.cc | 12 +- src/proxy/logging/LogBuffer.cc | 56 +- src/proxy/logging/LogConfig.cc | 18 +- src/proxy/logging/LogField.cc | 10 +- src/proxy/logging/LogFieldAliasMap.cc | 8 +- src/proxy/logging/LogFile.cc | 44 +- src/proxy/logging/LogFilter.cc | 60 +- src/proxy/logging/LogFormat.cc | 25 +- src/proxy/logging/LogObject.cc | 56 +- src/proxy/logging/LogStandalone.cc | 2 +- src/proxy/logging/LogUtils.cc | 26 +- src/proxy/logging/RolledLogDeleter.cc | 4 +- src/proxy/logging/YamlLogConfig.cc | 4 +- src/proxy/logging/YamlLogConfigDecoders.cc | 6 +- .../logging/unit-tests/benchmark_LogObject.cc | 14 +- src/proxy/logging/unit-tests/test_LogUtils.cc | 3 +- .../logging/unit-tests/test_RolledLogDeleter.cc | 20 +- src/proxy/private/SSLProxySession.h | 2 +- src/proxy/shared/DiagsConfig.cc | 24 +- src/records/P_RecCore.cc | 28 +- src/records/P_RecCore.h | 18 +- src/records/P_RecDefs.h | 66 +- src/records/P_RecFile.h | 16 +- src/records/P_RecMessage.h | 8 +- src/records/P_RecUtils.h | 30 +- src/records/RecConfigParse.cc | 22 +- src/records/RecCore.cc | 36 +- src/records/RecHttp.cc | 52 +- src/records/RecMessage.cc | 30 +- src/records/RecRawStats.cc | 10 +- src/records/RecUtils.cc | 108 ++- src/records/RecYAMLDecoder.cc | 27 +- src/records/RecordsConfig.cc | 8 +- src/records/RecordsConfigUtils.cc | 16 +- src/records/test_I_RecLocal.cc | 2 +- src/records/test_RecTree.cc | 2 +- src/records/unit_tests/test_RecHttp.cc | 14 +- src/shared/rpc/IPCSocketClient.cc | 10 +- src/traffic_cache_tool/CacheDefs.cc | 145 ++-- src/traffic_cache_tool/CacheDefs.h | 176 ++--- src/traffic_cache_tool/CacheScan.cc | 28 +- src/traffic_cache_tool/CacheScan.h | 6 +- src/traffic_cache_tool/CacheTool.cc | 161 +++-- src/traffic_crashlog/backtrace.cc | 20 +- src/traffic_crashlog/procinfo.cc | 10 +- src/traffic_crashlog/traffic_crashlog.cc | 26 +- src/traffic_crashlog/traffic_crashlog.h | 4 +- src/traffic_ctl/CtrlCommands.cc | 42 +- src/traffic_ctl/CtrlCommands.h | 4 +- src/traffic_ctl/CtrlPrinters.cc | 9 +- src/traffic_ctl/CtrlPrinters.h | 8 +- src/traffic_ctl/FileConfigCommand.cc | 6 +- src/traffic_ctl/FileConfigCommand.h | 2 +- src/traffic_ctl/jsonrpc/CtrlRPCRequests.h | 10 +- src/traffic_layout/engine.cc | 30 +- src/traffic_layout/file_system.cc | 2 +- src/traffic_layout/info.cc | 2 + src/traffic_logcat/logcat.cc | 24 +- src/traffic_logstats/logstats.cc | 162 +++-- src/traffic_quic/diags.h | 2 +- src/traffic_quic/quic_client.cc | 22 +- src/traffic_quic/quic_client.h | 36 +- src/traffic_quic/traffic_quic.cc | 4 +- src/traffic_server/Crash.cc | 12 +- src/traffic_server/SocksProxy.cc | 32 +- src/traffic_server/traffic_server.cc | 103 +-- src/traffic_top/stats.h | 22 +- src/traffic_top/traffic_top.cc | 28 +- src/traffic_via/traffic_via.cc | 16 +- src/tscore/Arena.cc | 4 +- src/tscore/ArgParser.cc | 2 +- src/tscore/BaseLogFile.cc | 20 +- src/tscore/CompileParseRules.cc | 12 +- src/tscore/ConsistentHash.cc | 22 +- src/tscore/CryptoHash.cc | 2 +- src/tscore/Diags.cc | 8 +- src/tscore/Encoding.cc | 8 +- src/tscore/EventNotify.cc | 10 +- src/tscore/FrequencyCounter.cc | 6 +- src/tscore/HKDF_openssl3.cc | 26 +- src/tscore/HashSip.cc | 8 +- src/tscore/HostLookup.cc | 22 +- src/tscore/JeMiAllocator.cc | 10 +- src/tscore/Layout.cc | 6 +- src/tscore/LogMessage.cc | 2 +- src/tscore/MMH.cc | 47 +- src/tscore/MatcherUtils.cc | 50 +- src/tscore/ParseRules.cc | 8 +- src/tscore/Regression.cc | 22 +- src/tscore/TextBuffer.cc | 2 +- src/tscore/Throttler.cc | 2 +- src/tscore/Tokenizer.cc | 24 +- src/tscore/Version.cc | 2 +- src/tscore/X509HostnameValidator.cc | 16 +- src/tscore/hugepages.cc | 6 +- src/tscore/ink_args.cc | 8 +- src/tscore/ink_base64.cc | 12 +- src/tscore/ink_cap.cc | 24 +- src/tscore/ink_error.cc | 14 +- src/tscore/ink_file.cc | 10 +- src/tscore/ink_hrtime.cc | 20 +- src/tscore/ink_inet.cc | 44 +- src/tscore/ink_memory.cc | 6 +- src/tscore/ink_mutex.cc | 2 +- src/tscore/ink_queue.cc | 48 +- src/tscore/ink_queue_utils.cc | 2 +- src/tscore/ink_rand.cc | 2 +- src/tscore/ink_res_init.cc | 40 +- src/tscore/ink_res_mkquery.cc | 32 +- src/tscore/ink_resource.cc | 20 +- src/tscore/ink_sock.cc | 10 +- src/tscore/ink_sprintf.cc | 10 +- src/tscore/ink_stack_trace.cc | 4 +- src/tscore/ink_string++.cc | 4 +- src/tscore/ink_string.cc | 14 +- src/tscore/ink_sys_control.cc | 2 +- src/tscore/ink_syslog.cc | 2 +- src/tscore/ink_time.cc | 6 +- src/tscore/llqueue.cc | 6 +- src/tscore/lockfile.cc | 16 +- src/tscore/runroot.cc | 8 +- src/tscore/test_atomic.cc | 32 +- src/tscore/test_freelist.cc | 4 +- src/tscore/test_geometry.cc | 2 +- src/tscore/unit_tests/test_AcidPtr.cc | 20 +- src/tscore/unit_tests/test_ArgParser.cc | 2 +- src/tscore/unit_tests/test_Bravo.cc | 18 +- src/tscore/unit_tests/test_CryptoHash.cc | 8 +- src/tscore/unit_tests/test_Encoding.cc | 4 +- src/tscore/unit_tests/test_Extendible.cc | 50 +- src/tscore/unit_tests/test_HKDF.cc | 72 +- src/tscore/unit_tests/test_History.cc | 2 +- src/tscore/unit_tests/test_IntrusivePtr.cc | 2 +- src/tscore/unit_tests/test_MMH.cc | 14 +- src/tscore/unit_tests/test_ParseRules.cc | 32 +- src/tscore/unit_tests/test_PriorityQueue.cc | 6 +- src/tscore/unit_tests/test_Ptr.cc | 4 +- src/tscore/unit_tests/test_Throttler.cc | 4 +- src/tscore/unit_tests/test_Version.cc | 2 +- .../unit_tests/test_X509HostnameValidator.cc | 20 +- src/tscore/unit_tests/test_arena.cc | 4 +- src/tscore/unit_tests/test_ink_inet.cc | 22 +- src/tscore/unit_tests/test_ink_string.cc | 6 +- src/tscore/unit_tests/test_layout.cc | 2 +- src/tscpp/api/AsyncHttpFetch.cc | 42 +- src/tscpp/api/AsyncTimer.cc | 16 +- src/tscpp/api/ClientRequest.cc | 4 +- src/tscpp/api/GlobalPlugin.cc | 4 +- src/tscpp/api/GzipDeflateTransformation.cc | 20 +- src/tscpp/api/GzipInflateTransformation.cc | 14 +- src/tscpp/api/Headers.cc | 38 +- src/tscpp/api/InterceptPlugin.cc | 42 +- src/tscpp/api/Logger.cc | 22 +- src/tscpp/api/RemapPlugin.cc | 6 +- src/tscpp/api/Request.cc | 18 +- src/tscpp/api/Response.cc | 6 +- src/tscpp/api/Transaction.cc | 54 +- src/tscpp/api/TransactionPlugin.cc | 6 +- src/tscpp/api/TransformationPlugin.cc | 20 +- src/tscpp/api/Url.cc | 12 +- src/tscpp/api/utils_internal.cc | 20 +- src/tscpp/api/utils_internal.h | 18 +- src/tsutil/DbgCtl.cc | 20 +- src/tsutil/Metrics.cc | 131 +++- src/tsutil/Regex.cc | 199 ++++-- src/tsutil/YamlCfg.cc | 2 +- src/tsutil/ts_ip.cc | 4 +- src/tsutil/ts_unit_parser.cc | 4 +- src/tsutil/unit_tests/test_LocalBuffer.cc | 24 +- src/tsutil/unit_tests/test_Metrics.cc | 38 +- src/tsutil/unit_tests/test_PostScript.cc | 2 +- src/tsutil/unit_tests/test_Regex.cc | 24 +- tests/CMakeLists.txt | 11 +- tests/Pipfile | 3 + tests/fuzzing/fuzz_esi.cc | 4 +- tests/fuzzing/fuzz_hpack.cc | 4 +- tests/fuzzing/fuzz_http.cc | 2 +- tests/fuzzing/fuzz_rec_http.cc | 2 +- tests/fuzzing/oss-fuzz.sh | 10 +- tests/gold_tests/cache/background_fill.test.py | 18 +- ...stderr.gold => background_fill_0_stderr_H.gold} | 4 +- ...stderr.gold => background_fill_0_stderr_W.gold} | 8 +- ...stderr.gold => background_fill_1_stderr_H.gold} | 4 +- ...stderr.gold => background_fill_1_stderr_W.gold} | 8 +- ...stderr.gold => background_fill_2_stderr_H.gold} | 4 +- ...stderr.gold => background_fill_2_stderr_W.gold} | 8 +- tests/gold_tests/chunked_encoding/smuggle-client.c | 4 +- tests/gold_tests/h2/gold/http2_8_stderr.gold | 18 - tests/gold_tests/h2/gold/http2_8_stdout.gold | 19 +- tests/gold_tests/h2/http2.test.py | 26 +- tests/gold_tests/h2/http2_rst_stream.test.py | 10 +- tests/gold_tests/h2/http2_write_threshold.test.py | 137 ++++ tests/gold_tests/h2/trickle_client.py | 349 +++++++++ tests/gold_tests/h2/trickle_server.py | 407 +++++++++++ .../jsonrpc/plugins/jsonrpc_plugin_handler_test.cc | 6 +- tests/gold_tests/pluginTest/TSVConnFd/TSVConnFd.cc | 40 +- .../pluginTest/certifier/certifier.test.py | 2 +- tests/gold_tests/pluginTest/compress/compress.gold | 24 +- .../pluginTest/compress/compress.test.py | 176 +++-- .../ja3_fingerprint/ja3_fingerprint.test.py | 3 + .../ja3_fingerprint/modify-incoming-client.gold | 2 +- .../ja3_fingerprint/modify-incoming-proxy.gold | 4 +- .../ja3_fingerprint/modify-sent-client.gold | 4 +- .../ja3_fingerprint/modify-sent-proxy.gold | 4 +- .../pluginTest/lua/lua_set_error_response.test.py | 98 +++ .../pluginTest/lua/set_error_response.lua | 29 + .../set_error_response.replay.yaml} | 56 +- .../polite_hook_wait/polite_hook_wait.cc | 6 +- tests/gold_tests/pluginTest/statichit/empty.txt | 0 .../gold_tests/pluginTest/statichit/small_body.txt | 1 + .../pluginTest/statichit/statichit.replay.yaml | 168 +++++ .../pluginTest/statichit/statichit.test.py | 88 +++ .../gold_tests/pluginTest/statichit/story_16.json | 395 ++++++++++ .../pluginTest/tsapi/test_TSHttpSsnInfo.cc | 35 +- .../pluginTest/tsapi/test_TSHttpSsnInfo.test.py | 4 +- .../tsapi/test_TSHttpTxnServerAddrSet.cc | 6 +- tests/gold_tests/pluginTest/tsapi/test_tsapi.cc | 10 +- .../basic/{basic.test.py => txn_box_basic.test.py} | 0 .../basic/{cmp.test.py => txn_box_cmp.test.py} | 0 .../{ip-addr.test.py => txn_box_ip-addr.test.py} | 0 .../basic/{mod.test.py => txn_box_mod.test.py} | 0 ...multi-cfg.test.py => txn_box_multi-cfg.test.py} | 0 .../{redirect.test.py => txn_box_redirect.test.py} | 0 .../basic/{reply.test.py => txn_box_reply.test.py} | 0 .../basic/{rxp.test.py => txn_box_rxp.test.py} | 0 .../basic/{stat.test.py => txn_box_stat.test.py} | 0 .../{tls-cert.test.py => txn_box_tls-cert.test.py} | 0 .../basic/{tls.test.py => txn_box_tls.test.py} | 0 .../basic/{tuple.test.py => txn_box_tuple.test.py} | 0 ...txn-debug.test.py => txn_box_txn-debug.test.py} | 0 ...txn-error.test.py => txn_box_txn-error.test.py} | 0 ...n_open_1.test.py => txn_box_txn_open_1.test.py} | 0 ...n_open_2.test.py => txn_box_txn_open_2.test.py} | 0 ...n_open_3.test.py => txn_box_txn_open_3.test.py} | 0 .../basic/{with.test.py => txn_box_with.test.py} | 0 ...ct_header.test.py => txn_box_ct_header.test.py} | 0 ...ing.test.py => txn_box_accept-encoding.test.py} | 0 ...-origin.test.py => txn_box_cors-origin.test.py} | 0 ...errer.test.py => txn_box_cors-referrer.test.py} | 0 .../{ip-acl.test.py => txn_box_ip-acl.test.py} | 0 .../prod/{mTLS.test.py => txn_box_mTLS.test.py} | 0 ...test.py => txn_box_query-delete-filter.test.py} | 0 ....test.py => txn_box_query-delete-regex.test.py} | 0 .../prod/{query.test.py => txn_box_query.test.py} | 0 .../{stanley.test.py => txn_box_stanley.test.py} | 0 .../{vznith-1.test.py => txn_box_vznith-1.test.py} | 0 .../{yts-3489.test.py => txn_box_yts-3489.test.py} | 0 .../pluginTest/txn_box/ramp/ramp.replay.yaml | 4 +- ...ramp-1.test.py => txn_box_multi-ramp-1.test.py} | 0 ...ramp-2.test.py => txn_box_multi-ramp-2.test.py} | 0 ...ramp-3.test.py => txn_box_multi-ramp-3.test.py} | 0 .../ramp/{ramp.test.py => txn_box_ramp.test.py} | 31 +- ...map-base.test.py => txn_box_remap-base.test.py} | 0 .../{smoke-2.test.py => txn_box_smoke-2.test.py} | 0 .../smoke/{smoke.test.py => txn_box_smoke.test.py} | 0 ...ic_file.test.py => txn_box_static_file.test.py} | 0 tests/gold_tests/timeout/ssl-delay-server.cc | 10 +- tests/gold_tests/tls/h2_early_decode.py | 4 +- tests/gold_tests/tls/ssl-post.c | 20 +- tests/gold_tests/tls/ssl/passphrase.key | 30 + tests/gold_tests/tls/ssl/passphrase.pem | 27 + tests/gold_tests/tls/ssl/passphrase2.key | 30 + tests/gold_tests/tls/ssl/passphrase2.pem | 27 + tests/gold_tests/tls/ssl_key_dialog.test.py | 91 +++ tests/gold_tests/tls/test-0rtt-s_client.py | 5 +- tests/gold_tests/tls/tls_0rtt_server.test.py | 22 +- .../tls/tls_check_dual_cert_selection.test.py | 8 +- .../tls/tls_check_dual_cert_selection2.test.py | 12 +- .../tls_check_dual_cert_selection_plugin.test.py | 14 +- .../tls/tls_verify_override_base.test.py | 4 +- tests/tools/plugins/async_engine.c | 18 +- tests/tools/plugins/custom204plugin.cc | 40 +- tests/tools/plugins/emergency_shutdown.cc | 2 +- tests/tools/plugins/fatal_shutdown.cc | 2 +- tests/tools/plugins/hook_add_plugin.cc | 2 +- tests/tools/plugins/hook_tunnel_plugin.cc | 2 +- tests/tools/plugins/ssl_client_verify_test.cc | 16 +- tests/tools/plugins/ssl_hook_test.cc | 6 +- tests/tools/plugins/ssl_secret_load_test.cc | 2 +- tests/tools/plugins/ssl_verify_test.cc | 14 +- tests/tools/plugins/ssntxnorder_verify.cc | 12 +- tests/tools/plugins/test_cppapi.cc | 2 +- tests/tools/plugins/test_log_interface.cc | 6 +- tests/tools/plugins/tunnel_transform.cc | 14 +- tests/tools/plugins/user_args.cc | 24 +- tools/benchmark/benchmark_FreeList.cc | 22 +- tools/benchmark/benchmark_SharedMutex.cc | 2 +- ...ild_h3_tools.sh => build_boringssl_h3_tools.sh} | 97 ++- tools/build_h3_tools.sh | 261 +------ ...build_h3_tools.sh => build_openssl_h3_tools.sh} | 108 +-- tools/clang-format.sh | 8 +- tools/cripts/compiler.sh | 97 +++ tools/http_load/http_load.c | 228 +++--- tools/http_load/timers.c | 16 +- tools/http_load/timers.h | 16 +- tools/jtest/jtest.cc | 486 ++++++------- 1396 files changed, 23196 insertions(+), 19609 deletions(-) diff --cc include/iocore/net/TLSSessionResumptionSupport.h index 6ba38779b0,5c610550f5..4088d4f785 --- a/include/iocore/net/TLSSessionResumptionSupport.h +++ b/include/iocore/net/TLSSessionResumptionSupport.h @@@ -47,10 -48,11 +48,10 @@@ public int processSessionTicket(SSL *ssl, unsigned char *keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx, HMAC_CTX *hctx, int enc); #endif - bool getSSLSessionCacheHit() const; - bool getSSLOriginSessionCacheHit() const; + bool getSSLSessionCacheHit() const; + bool getSSLOriginSessionCacheHit() const; ssl_curve_id getSSLCurveNID() const; - SSL_SESSION *getSession(SSL *ssl, const unsigned char *id, int len, int *copy); std::shared_ptr<SSL_SESSION> getOriginSession(SSL *ssl, const std::string &lookup_key); protected: diff --cc include/ts/ts.h index 1dc2bf7cd5,2911d72a7a..5e00fa7be8 --- a/include/ts/ts.h +++ b/include/ts/ts.h @@@ -1364,12 -1364,17 +1364,12 @@@ TSReturnCode TSVConnProtocolEnable(TSVC int TSVConnIsSsl(TSVConn sslp); /* Returns 1 if a certificate was provided in the TLS handshake, 0 otherwise. */ - int TSVConnProvidedSslCert(TSVConn sslp); + int TSVConnProvidedSslCert(TSVConn sslp); const char *TSVConnSslSniGet(TSVConn sslp, int *length); -TSSslSession TSSslSessionGet(const TSSslSessionID *session_id); -int TSSslSessionGetBuffer(const TSSslSessionID *session_id, char *buffer, int *len_ptr); -TSReturnCode TSSslSessionInsert(const TSSslSessionID *session_id, TSSslSession add_session, TSSslConnection ssl_conn); -TSReturnCode TSSslSessionRemove(const TSSslSessionID *session_id); - /* -------------------------------------------------------------------------- HTTP transactions */ - void TSHttpTxnHookAdd(TSHttpTxn txnp, TSHttpHookID id, TSCont contp); + void TSHttpTxnHookAdd(TSHttpTxn txnp, TSHttpHookID id, TSCont contp); TSHttpSsn TSHttpTxnSsnGet(TSHttpTxn txnp); /* Gets the client request header for a specified HTTP transaction. */ diff --cc src/iocore/net/P_SSLConfig.h index bd7a3cc8f6,f894cb02bb..44c3fca63a --- a/src/iocore/net/P_SSLConfig.h +++ b/src/iocore/net/P_SSLConfig.h @@@ -72,28 -78,34 +72,28 @@@ struct SSLConfigParams : public ConfigI char *dhparamsFile; char *cipherSuite; char *client_cipherSuite; - int configExitOnLoadError; - int clientCertLevel; - int verify_depth; - int ssl_origin_session_cache; - int ssl_origin_session_cache_size; - - char *clientCertPath; - char *clientCertPathOnly; - char *clientKeyPath; - char *clientKeyPathOnly; - char *clientCACertFilename; - char *clientCACertPath; - int clientCertExitOnLoadError; - YamlSNIConfig::Policy verifyServerPolicy; + int configExitOnLoadError; + int clientCertLevel; + int verify_depth; + int ssl_origin_session_cache; + int ssl_origin_session_cache_size; - int ssl_session_cache; // SSL_SESSION_CACHE_MODE - int ssl_session_cache_size; - int ssl_session_cache_num_buckets; - int ssl_session_cache_skip_on_contention; - int ssl_session_cache_timeout; - int ssl_session_cache_auto_clear; + + char *clientCertPath; + char *clientCertPathOnly; + char *clientKeyPath; + char *clientKeyPathOnly; + char *clientCACertFilename; + char *clientCACertPath; + int clientCertExitOnLoadError; + YamlSNIConfig::Policy verifyServerPolicy; YamlSNIConfig::Property verifyServerProperties; - bool tls_server_connection; - int client_verify_depth; - long ssl_ctx_options; - long ssl_client_ctx_options; + bool tls_server_connection; + int client_verify_depth; + long ssl_ctx_options; + long ssl_client_ctx_options; unsigned char alpn_protocols_array[MAX_ALPN_STRING]; - int alpn_protocols_array_size = 0; + int alpn_protocols_array_size = 0; char *server_tls13_cipher_suites; char *client_tls13_cipher_suites; @@@ -110,23 -122,26 +110,23 @@@ static uint32_t server_max_early_data; static uint32_t server_recv_max_early_data; - static bool server_allow_early_data_params; + static bool server_allow_early_data_params; - static int ssl_maxrecord; - static int ssl_misc_max_iobuffer_size_index; + static int ssl_maxrecord; + static int ssl_misc_max_iobuffer_size_index; static bool ssl_allow_client_renegotiation; - static bool ssl_ocsp_enabled; - static int ssl_ocsp_cache_timeout; - static bool ssl_ocsp_request_mode; - static int ssl_ocsp_request_timeout; - static int ssl_ocsp_update_period; - static int ssl_handshake_timeout_in; - char *ssl_ocsp_response_path_only; + static bool ssl_ocsp_enabled; + static int ssl_ocsp_cache_timeout; + static bool ssl_ocsp_request_mode; + static int ssl_ocsp_request_timeout; + static int ssl_ocsp_update_period; + static int ssl_handshake_timeout_in; + char *ssl_ocsp_response_path_only; static char *ssl_ocsp_user_agent; - static int origin_session_cache; + static int origin_session_cache; static size_t origin_session_cache_size; - static size_t session_cache_number_buckets; - static size_t session_cache_max_bucket_size; - static bool session_cache_skip_on_lock_contention; static swoc::IPRangeSet *proxy_protocol_ip_addrs; diff --cc src/iocore/net/SSLConfig.cc index dcdeb9ca22,aa02e18a99..7ed208d4c7 --- a/src/iocore/net/SSLConfig.cc +++ b/src/iocore/net/SSLConfig.cc @@@ -52,36 -53,47 +53,44 @@@ #include "SSLSessionTicket.h" #include "iocore/net/YamlSNIConfig.h" - int SSLConfig::config_index = 0; - int SSLConfig::configids[] = {0, 0}; - int SSLCertificateConfig::configid = 0; - int SSLTicketKeyConfig::configid = 0; - int SSLConfigParams::ssl_maxrecord = 0; - int SSLConfigParams::ssl_misc_max_iobuffer_size_index = 8; - bool SSLConfigParams::ssl_allow_client_renegotiation = false; - bool SSLConfigParams::ssl_ocsp_enabled = false; - int SSLConfigParams::ssl_ocsp_cache_timeout = 3600; - bool SSLConfigParams::ssl_ocsp_request_mode = false; - int SSLConfigParams::ssl_ocsp_request_timeout = 10; - int SSLConfigParams::ssl_ocsp_update_period = 60; - char *SSLConfigParams::ssl_ocsp_user_agent = nullptr; - int SSLConfigParams::ssl_handshake_timeout_in = 0; - int SSLConfigParams::origin_session_cache = 1; - size_t SSLConfigParams::origin_session_cache_size = 10240; - init_ssl_ctx_func SSLConfigParams::init_ssl_ctx_cb = nullptr; - load_ssl_file_func SSLConfigParams::load_ssl_file_cb = nullptr; - swoc::IPRangeSet *SSLConfigParams::proxy_protocol_ip_addrs = nullptr; - bool SSLConfigParams::ssl_ktls_enabled = false; - - const uint32_t EARLY_DATA_DEFAULT_SIZE = 16384; - uint32_t SSLConfigParams::server_max_early_data = 0; - uint32_t SSLConfigParams::server_recv_max_early_data = EARLY_DATA_DEFAULT_SIZE; - bool SSLConfigParams::server_allow_early_data_params = false; - - int SSLConfigParams::async_handshake_enabled = 0; - char *SSLConfigParams::engine_conf_file = nullptr; - - static std::unique_ptr<ConfigUpdateHandler<SSLTicketKeyConfig>> sslTicketKey; -int SSLConfig::config_index = 0; -int SSLConfig::configids[] = {0, 0}; -int SSLCertificateConfig::configid = 0; -int SSLTicketKeyConfig::configid = 0; -int SSLConfigParams::ssl_maxrecord = 0; -int SSLConfigParams::ssl_misc_max_iobuffer_size_index = 8; -bool SSLConfigParams::ssl_allow_client_renegotiation = false; -bool SSLConfigParams::ssl_ocsp_enabled = false; -int SSLConfigParams::ssl_ocsp_cache_timeout = 3600; -bool SSLConfigParams::ssl_ocsp_request_mode = false; -int SSLConfigParams::ssl_ocsp_request_timeout = 10; -int SSLConfigParams::ssl_ocsp_update_period = 60; -char *SSLConfigParams::ssl_ocsp_user_agent = nullptr; -int SSLConfigParams::ssl_handshake_timeout_in = 0; -int SSLConfigParams::origin_session_cache = 1; -size_t SSLConfigParams::origin_session_cache_size = 10240; -size_t SSLConfigParams::session_cache_number_buckets = 1024; -bool SSLConfigParams::session_cache_skip_on_lock_contention = false; -size_t SSLConfigParams::session_cache_max_bucket_size = 100; -init_ssl_ctx_func SSLConfigParams::init_ssl_ctx_cb = nullptr; -load_ssl_file_func SSLConfigParams::load_ssl_file_cb = nullptr; -swoc::IPRangeSet *SSLConfigParams::proxy_protocol_ip_addrs = nullptr; -bool SSLConfigParams::ssl_ktls_enabled = false; ++int SSLConfig::config_index = 0; ++int SSLConfig::configids[] = {0, 0}; ++int SSLCertificateConfig::configid = 0; ++int SSLTicketKeyConfig::configid = 0; ++int SSLConfigParams::ssl_maxrecord = 0; ++int SSLConfigParams::ssl_misc_max_iobuffer_size_index = 8; ++bool SSLConfigParams::ssl_allow_client_renegotiation = false; ++bool SSLConfigParams::ssl_ocsp_enabled = false; ++int SSLConfigParams::ssl_ocsp_cache_timeout = 3600; ++bool SSLConfigParams::ssl_ocsp_request_mode = false; ++int SSLConfigParams::ssl_ocsp_request_timeout = 10; ++int SSLConfigParams::ssl_ocsp_update_period = 60; ++char *SSLConfigParams::ssl_ocsp_user_agent = nullptr; ++int SSLConfigParams::ssl_handshake_timeout_in = 0; ++int SSLConfigParams::origin_session_cache = 1; ++size_t SSLConfigParams::origin_session_cache_size = 10240; ++init_ssl_ctx_func SSLConfigParams::init_ssl_ctx_cb = nullptr; ++load_ssl_file_func SSLConfigParams::load_ssl_file_cb = nullptr; ++swoc::IPRangeSet *SSLConfigParams::proxy_protocol_ip_addrs = nullptr; ++bool SSLConfigParams::ssl_ktls_enabled = false; + + const uint32_t EARLY_DATA_DEFAULT_SIZE = 16384; + uint32_t SSLConfigParams::server_max_early_data = 0; + uint32_t SSLConfigParams::server_recv_max_early_data = EARLY_DATA_DEFAULT_SIZE; + bool SSLConfigParams::server_allow_early_data_params = false; + + int SSLConfigParams::async_handshake_enabled = 0; + char *SSLConfigParams::engine_conf_file = nullptr; + + namespace + { + std::unique_ptr<ConfigUpdateHandler<SSLTicketKeyConfig>> sslTicketKey; + + DbgCtl dbg_ctl_ssl_load{"ssl_load"}; + DbgCtl dbg_ctl_ssl_config_updateCTX{"ssl_config_updateCTX"}; + DbgCtl dbg_ctl_ssl_client_ctx{"ssl_client_ctx"}; + + } // end anonymous namespace SSLConfigParams::SSLConfigParams() { diff --cc src/iocore/net/SSLSessionCache.cc index 53cd7b8d8f,90eaceec23..73cedfc186 --- a/src/iocore/net/SSLSessionCache.cc +++ b/src/iocore/net/SSLSessionCache.cc @@@ -27,6 -27,293 +27,11 @@@ #include <memory> #include <shared_mutex> -#define SSLSESSIONCACHE_STRINGIFY0(x) #x -#define SSLSESSIONCACHE_STRINGIFY(x) SSLSESSIONCACHE_STRINGIFY0(x) -#define SSLSESSIONCACHE_LINENO SSLSESSIONCACHE_STRINGIFY(__LINE__) - -#ifdef DEBUG -#define PRINT_BUCKET(x) this->print(x " at " __FILE__ ":" SSLSESSIONCACHE_LINENO); -#else -#define PRINT_BUCKET(x) -#endif - + namespace + { + DbgCtl dbg_ctl_ssl_origin_session_cache{"ssl.origin_session_cache"}; -DbgCtl dbg_ctl_ssl_session_cache{"ssl.session_cache"}; -DbgCtl dbg_ctl_ssl_session_cache_bucket{"ssl.session_cache.bucket"}; -DbgCtl dbg_ctl_ssl_session_cache_get{"ssl.session_cache.get"}; -DbgCtl dbg_ctl_ssl_session_cache_insert{"ssl.session_cache.insert"}; -DbgCtl dbg_ctl_ssl_session_cache_remove{"ssl.session_cache.remove"}; - + } // end anonymous namespace + -/* Session Cache */ -SSLSessionCache::SSLSessionCache() : nbuckets(SSLConfigParams::session_cache_number_buckets) -{ - Dbg(dbg_ctl_ssl_session_cache, "Created new ssl session cache %p with %zu buckets each with size max size %zu", this, nbuckets, - SSLConfigParams::session_cache_max_bucket_size); - - session_bucket = new SSLSessionBucket[nbuckets]; -} - -SSLSessionCache::~SSLSessionCache() -{ - delete[] session_bucket; -} - -int -SSLSessionCache::getSessionBuffer(const SSLSessionID &sid, char *buffer, int &len) const -{ - uint64_t hash = sid.hash(); - uint64_t target_bucket = hash % nbuckets; - SSLSessionBucket *bucket = &session_bucket[target_bucket]; - - return bucket->getSessionBuffer(sid, buffer, len); -} - -bool -SSLSessionCache::getSession(const SSLSessionID &sid, SSL_SESSION **sess, ssl_session_cache_exdata **data) const -{ - uint64_t hash = sid.hash(); - uint64_t target_bucket = hash % nbuckets; - SSLSessionBucket *bucket = &session_bucket[target_bucket]; - - if (dbg_ctl_ssl_session_cache.on()) { - char buf[sid.len * 2 + 1]; - sid.toString(buf, sizeof(buf)); - DbgPrint(dbg_ctl_ssl_session_cache_get, "SessionCache looking in bucket %" PRId64 " (%p) for session '%s' (hash: %" PRIX64 ").", - target_bucket, bucket, buf, hash); - } - - return bucket->getSession(sid, sess, data); -} - -void -SSLSessionCache::removeSession(const SSLSessionID &sid) -{ - uint64_t hash = sid.hash(); - uint64_t target_bucket = hash % nbuckets; - SSLSessionBucket *bucket = &session_bucket[target_bucket]; - - if (dbg_ctl_ssl_session_cache_remove.on()) { - char buf[sid.len * 2 + 1]; - sid.toString(buf, sizeof(buf)); - DbgPrint(dbg_ctl_ssl_session_cache_remove, - "SessionCache using bucket %" PRId64 " (%p): Removing session '%s' (hash: %" PRIX64 ").", target_bucket, bucket, buf, - hash); - } - Metrics::Counter::increment(ssl_rsb.session_cache_eviction); - - bucket->removeSession(sid); -} - -void -SSLSessionCache::insertSession(const SSLSessionID &sid, SSL_SESSION *sess, SSL *ssl) -{ - uint64_t hash = sid.hash(); - uint64_t target_bucket = hash % nbuckets; - SSLSessionBucket *bucket = &session_bucket[target_bucket]; - - if (dbg_ctl_ssl_session_cache_insert.on()) { - char buf[sid.len * 2 + 1]; - sid.toString(buf, sizeof(buf)); - DbgPrint(dbg_ctl_ssl_session_cache_insert, - "SessionCache using bucket %" PRId64 " (%p): Inserting session '%s' (hash: %" PRIX64 ").", target_bucket, bucket, buf, - hash); - } - - bucket->insertSession(sid, sess, ssl); -} - -void -SSLSessionBucket::insertSession(const SSLSessionID &id, SSL_SESSION *sess, SSL *ssl) -{ - std::shared_lock r_lock(mutex, std::try_to_lock); - if (!r_lock.owns_lock()) { - Metrics::Counter::increment(ssl_rsb.session_cache_lock_contention); - if (SSLConfigParams::session_cache_skip_on_lock_contention) { - return; - } - r_lock.lock(); - } - - // Don't insert if it is already there - if (bucket_map.find(id) != bucket_map.end()) { - return; - } - - r_lock.unlock(); - - size_t len = i2d_SSL_SESSION(sess, nullptr); // make sure we're not going to need more than SSL_MAX_SESSION_SIZE bytes - /* do not cache a session that's too big. */ - if (len > static_cast<size_t>(SSL_MAX_SESSION_SIZE)) { - Dbg(dbg_ctl_ssl_session_cache, "Unable to save SSL session because size of %zd exceeds the max of %d", len, - SSL_MAX_SESSION_SIZE); - return; - } - - if (dbg_ctl_ssl_session_cache.on()) { - char buf[id.len * 2 + 1]; - id.toString(buf, sizeof(buf)); - DbgPrint(dbg_ctl_ssl_session_cache, "Inserting session '%s' to bucket %p.", buf, this); - } - - Ptr<IOBufferData> buf; - Ptr<IOBufferData> buf_exdata; - size_t len_exdata = sizeof(ssl_session_cache_exdata); - buf = new_IOBufferData(buffer_size_to_index(len, MAX_BUFFER_SIZE_INDEX), MEMALIGNED); - ink_release_assert(static_cast<size_t>(buf->block_size()) >= len); - unsigned char *loc = reinterpret_cast<unsigned char *>(buf->data()); - i2d_SSL_SESSION(sess, &loc); - buf_exdata = new_IOBufferData(buffer_size_to_index(len, MAX_BUFFER_SIZE_INDEX), MEMALIGNED); - ink_release_assert(static_cast<size_t>(buf_exdata->block_size()) >= len_exdata); - ssl_session_cache_exdata *exdata = reinterpret_cast<ssl_session_cache_exdata *>(buf_exdata->data()); - // This could be moved to a function in charge of populating exdata - exdata->curve = (ssl == nullptr) ? 0 : SSLGetCurveNID(ssl); - - std::unique_ptr<SSLSession> ssl_session(new SSLSession(id, buf, len, buf_exdata)); - - std::unique_lock w_lock(mutex, std::try_to_lock); - if (!w_lock.owns_lock()) { - Metrics::Counter::increment(ssl_rsb.session_cache_lock_contention); - if (SSLConfigParams::session_cache_skip_on_lock_contention) { - return; - } - w_lock.lock(); - } - - PRINT_BUCKET("insertSession before") - if (bucket_map.size() >= SSLConfigParams::session_cache_max_bucket_size) { - Metrics::Counter::increment(ssl_rsb.session_cache_eviction); - removeOldestSession(w_lock); - } - - /* do the actual insert */ - auto node = ssl_session.release(); - bucket_que.enqueue(node); - bucket_map[id] = node; - - PRINT_BUCKET("insertSession after") -} - -int -SSLSessionBucket::getSessionBuffer(const SSLSessionID &id, char *buffer, int &len) -{ - int true_len = 0; - std::shared_lock lock(mutex, std::try_to_lock); - if (!lock.owns_lock()) { - Metrics::Counter::increment(ssl_rsb.session_cache_lock_contention); - if (SSLConfigParams::session_cache_skip_on_lock_contention) { - return true_len; - } - lock.lock(); - } - - auto entry = bucket_map.find(id); - if (buffer && entry != bucket_map.end()) { - true_len = entry->second->len_asn1_data; - const unsigned char *loc = reinterpret_cast<const unsigned char *>(entry->second->asn1_data->data()); - if (true_len < len) { - len = true_len; - } - memcpy(buffer, loc, len); - return true_len; - } - return 0; -} - -bool -SSLSessionBucket::getSession(const SSLSessionID &id, SSL_SESSION **sess, ssl_session_cache_exdata **data) -{ - char buf[id.len * 2 + 1]; - buf[0] = '\0'; // just to be safe. - if (dbg_ctl_ssl_session_cache.on()) { - id.toString(buf, sizeof(buf)); - } - - Dbg(dbg_ctl_ssl_session_cache, "Looking for session with id '%s' in bucket %p", buf, this); - - std::shared_lock lock(mutex, std::try_to_lock); - if (!lock.owns_lock()) { - Metrics::Counter::increment(ssl_rsb.session_cache_lock_contention); - if (SSLConfigParams::session_cache_skip_on_lock_contention) { - return false; - } - lock.lock(); - } - - PRINT_BUCKET("getSession") - - auto entry = bucket_map.find(id); - if (entry == bucket_map.end()) { - Dbg(dbg_ctl_ssl_session_cache, "Session with id '%s' not found in bucket %p.", buf, this); - return false; - } - const unsigned char *loc = reinterpret_cast<const unsigned char *>(entry->second->asn1_data->data()); - *sess = d2i_SSL_SESSION(nullptr, &loc, entry->second->len_asn1_data); - if (data != nullptr) { - ssl_session_cache_exdata *exdata = reinterpret_cast<ssl_session_cache_exdata *>(entry->second->extra_data->data()); - *data = exdata; - } - return true; -} - -void inline SSLSessionBucket::print(const char *ref_str) const -{ - /* NOTE: This method assumes you're already holding the bucket lock */ - if (!dbg_ctl_ssl_session_cache_bucket.on()) { - return; - } - - fprintf(stderr, "-------------- BUCKET %p (%s) ----------------\n", this, ref_str); - fprintf(stderr, "Current Size: %ld, Max Size: %zd\n", bucket_map.size(), SSLConfigParams::session_cache_max_bucket_size); - fprintf(stderr, "Bucket: \n"); - - for (auto &x : bucket_map) { - char s_buf[2 * x.second->session_id.len + 1]; - x.second->session_id.toString(s_buf, sizeof(s_buf)); - fprintf(stderr, " %s\n", s_buf); - } -} - -void inline SSLSessionBucket::removeOldestSession(const std::unique_lock<ts::shared_mutex> &lock) -{ - // Caller must hold the bucket shared_mutex with unique_lock. - ink_assert(lock.owns_lock()); - - PRINT_BUCKET("removeOldestSession before") - - while (bucket_que.head && bucket_que.size >= static_cast<int>(SSLConfigParams::session_cache_max_bucket_size)) { - auto node = bucket_que.pop(); - bucket_map.erase(node->session_id); - delete node; - } - - PRINT_BUCKET("removeOldestSession after") -} - -void -SSLSessionBucket::removeSession(const SSLSessionID &id) -{ - // We can't bail on contention here because this session MUST be removed. - std::unique_lock lock(mutex); - - PRINT_BUCKET("removeSession before") - - auto entry = bucket_map.find(id); - if (entry != bucket_map.end()) { - auto node = entry->second; - bucket_que.remove(node); - bucket_map.erase(entry); - delete node; - } - - PRINT_BUCKET("removeSession after") - - return; -} - // Custom deleter for shared origin sessions void SSLSessDeleter(SSL_SESSION *_p) diff --cc src/iocore/net/SSLUtils.cc index 1b9828b5b6,53dc2bb117..cedc87a475 --- a/src/iocore/net/SSLUtils.cc +++ b/src/iocore/net/SSLUtils.cc @@@ -101,10 -102,12 +102,10 @@@ static constexpr char SSL_C #endif #endif -SSLSessionCache *session_cache; // declared extern in P_SSLConfig.h - static int ssl_vc_index = -1; - static ink_mutex *mutex_buf = nullptr; - static bool open_ssl_initialized = false; + static ink_mutex *mutex_buf = nullptr; + static bool open_ssl_initialized = false; static DbgCtl dbg_ctl_ssl_load{"ssl_load"}; static DbgCtl dbg_ctl_ssl_session_cache{"ssl.session_cache"}; @@@ -349,15 -438,12 +350,15 @@@ ssl_cert_callback(SSL *ssl, void *arg } // Reset the ticket callback if needed - SSL_CTX *ctx = SSL_get_SSL_CTX(ssl); - SSL_CTX *ctx = SSL_get_SSL_CTX(ssl); ++ SSL_CTX *ctx = SSL_get_SSL_CTX(ssl); + shared_SSLMultiCertConfigParams sslMultiCertSettings = std::make_shared<SSLMultiCertConfigParams>(); + if (sslMultiCertSettings->session_ticket_enabled != 0) { #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB - SSL_CTX_set_tlsext_ticket_key_evp_cb(ctx, ssl_callback_session_ticket); + SSL_CTX_set_tlsext_ticket_key_evp_cb(ctx, ssl_callback_session_ticket); #else - SSL_CTX_set_tlsext_ticket_key_cb(ctx, ssl_callback_session_ticket); + SSL_CTX_set_tlsext_ticket_key_cb(ctx, ssl_callback_session_ticket); #endif + } } #endif