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 3a1b727c400f0ce064169bb714e5d57be4e1fbe4 Merge: 7c4a753322 c57eca2042 Author: bneradt <bner...@yahooinc.com> AuthorDate: Tue Jul 22 12:01:12 2025 -0500 Merge latest master into 11-Dev CMakePresets.json | 12 + NOTICE | 7 + SECURITY.md | 22 + doc/admin-guide/configuration/hrw4u.en.rst | 55 +- doc/admin-guide/plugins/header_rewrite.en.rst | 71 +- doc/developer-guide/cripts/cripts-certs.en.rst | 186 + .../cripts/cripts-connections.en.rst | 25 + doc/developer-guide/cripts/index.en.rst | 3 +- include/cripts/Certs.hpp | 633 + include/cripts/ConfigsBase.hpp | 1 + include/cripts/Connections.hpp | 102 +- include/cripts/Matcher.hpp | 6 +- include/cripts/Preamble.hpp | 1 + include/iocore/hostdb/HostDBProcessor.h | 5 - include/iocore/net/SSLSNIConfig.h | 19 +- include/proxy/hdrs/HuffmanCodec.h | 8 +- include/proxy/http/HttpCacheSM.h | 2 +- include/shared/rpc/RPCClient.h | 10 +- include/tsutil/Regex.h | 4 + lib/CMakeLists.txt | 2 + .../cache_fill => lib/ls-hpack}/CMakeLists.txt | 9 +- lib/ls-hpack/README.md | 26 + lib/ls-hpack/huff-tables.h | 136290 ++++++++++++++++++ lib/ls-hpack/lshpack.cc | 246 + lib/ls-hpack/lshpack.h | 68 + plugins/experimental/cache_fill/CMakeLists.txt | 2 +- plugins/experimental/cache_fill/cache_fill.cc | 80 +- plugins/experimental/cache_fill/configs.cc | 213 + plugins/experimental/cache_fill/configs.h | 89 + plugins/experimental/cache_fill/rules.cc | 145 + plugins/experimental/cache_fill/rules.h | 78 + plugins/header_rewrite/conditions.cc | 44 +- plugins/header_rewrite/conditions.h | 32 +- plugins/header_rewrite/header_rewrite.cc | 85 +- plugins/header_rewrite/matcher.cc | 2 +- plugins/header_rewrite/operators.cc | 12 + plugins/header_rewrite/operators.h | 1 + plugins/header_rewrite/statement.h | 18 +- plugins/ja3_fingerprint/ja3_fingerprint.cc | 10 +- plugins/origin_server_auth/origin_server_auth.cc | 40 +- plugins/stats_over_http/stats_over_http.cc | 66 +- plugins/xdebug/xdebug.cc | 2 + src/cripts/CMakeLists.txt | 1 + src/cripts/Certs.cc | 269 + src/cripts/Connections.cc | 14 + src/iocore/cache/CMakeLists.txt | 1 + src/iocore/hostdb/HostDB.cc | 160 +- src/iocore/hostdb/P_HostDBProcessor.h | 45 +- src/iocore/net/OCSPStapling.cc | 4 +- src/iocore/net/P_QUICNetVConnection.h | 4 +- src/iocore/net/P_SSLNetVConnection.h | 20 +- src/iocore/net/P_UnixNetVConnection.h | 38 +- src/iocore/net/QUICNetVConnection.cc | 14 +- src/iocore/net/SNIActionPerformer.cc | 2 +- src/iocore/net/SSLNetVConnection.cc | 76 +- src/iocore/net/SSLSNIConfig.cc | 42 +- src/iocore/net/UnixNetVConnection.cc | 80 +- src/proxy/hdrs/CMakeLists.txt | 13 +- src/proxy/hdrs/HuffmanCodec.cc | 459 +- src/proxy/hdrs/XPACK.cc | 14 +- src/proxy/hdrs/unit_tests/test_Huffmancode.cc | 13 +- src/proxy/hdrs/unit_tests/test_XPACK.cc | 3 - src/proxy/hdrs/unit_tests/unit_test_main.cc | 6 - src/proxy/http/HttpCacheSM.cc | 28 +- src/proxy/http/HttpSM.cc | 5 +- src/proxy/http2/Http2Stream.cc | 12 +- src/proxy/http2/test_HPACK.cc | 4 - src/proxy/http2/unit_tests/main.cc | 3 - src/proxy/http3/test/main_qpack.cc | 1 - src/shared/rpc/IPCSocketClient.cc | 12 +- src/traffic_ctl/CtrlCommands.cc | 31 +- src/traffic_ctl/CtrlCommands.h | 25 +- src/traffic_ctl/FileConfigCommand.h | 3 +- src/traffic_ctl/traffic_ctl.cc | 6 +- src/traffic_layout/info.cc | 11 +- src/traffic_quic/traffic_quic.cc | 1 - src/traffic_server/traffic_server.cc | 1 - src/traffic_top/stats.h | 3 +- src/traffic_via/traffic_via.cc | 55 +- src/tsutil/Regex.cc | 34 +- tests/CMakeLists.txt | 51 +- tests/README.md | 2 +- tests/autest.sh.in | 2 +- tests/fuzzing/fuzz_hpack.cc | 2 - tests/gold_tests/autest-site/conditions.test.ext | 5 + tests/gold_tests/autest-site/curl.test.ext | 16 +- tests/gold_tests/autest-site/setup.cli.ext | 2 +- .../gold_tests/autest-site/trafficserver.test.ext | 2 +- tests/gold_tests/basic/basic.test.py | 2 +- tests/gold_tests/basic/config.test.py | 4 +- tests/gold_tests/basic/copy_config.test.py | 8 +- tests/gold_tests/basic/copy_config2.test.py | 4 +- tests/gold_tests/bigobj/bigobj.test.py | 47 +- tests/gold_tests/cache/background_fill.test.py | 19 +- tests/gold_tests/cache/cache-control.test.py | 9 +- .../cache/cache-generation-clear.test.py | 15 +- .../cache/cache-generation-disjoint.test.py | 18 +- .../cache/disjoint-wait-for-cache.test.py | 18 +- .../cache/proxy_serve_stale_dns_fail.test.py | 10 +- .../chunked_encoding/bad_chunked_encoding.test.py | 6 +- .../chunked_encoding/chunked_encoding.test.py | 32 +- .../chunked_encoding/chunked_encoding_h2.test.py | 1 + .../chunked_encoding/gold/chunked_GET_200.gold | 2 +- ...unked_GET_200.gold => chunked_GET_200_uds.gold} | 4 +- tests/gold_tests/connect/connect.test.py | 16 +- .../connect/gold/connect_0_stderr_uds.gold | 19 + tests/gold_tests/continuations/double.test.py | 2 +- tests/gold_tests/continuations/double_h2.test.py | 1 + tests/gold_tests/continuations/openclose.test.py | 2 +- .../gold_tests/continuations/openclose_h2.test.py | 1 + tests/gold_tests/continuations/session_id.test.py | 18 +- tests/gold_tests/cripts/cripts.test.py | 32 +- tests/gold_tests/cripts/files/basic.cript | 8 + tests/gold_tests/cripts/gold/certs_cript.gold | 17 + tests/gold_tests/dns/splitdns.test.py | 4 +- tests/gold_tests/early_hints/early_hints.test.py | 8 +- .../gold_tests/forward_proxy/forward_proxy.test.py | 1 + tests/gold_tests/headers/accept_webp.test.py | 1 + .../gold_tests/headers/cache_and_req_body.test.py | 2 +- tests/gold_tests/headers/cachedIMSRange.test.py | 81 +- tests/gold_tests/headers/field_name_space.test.py | 7 +- tests/gold_tests/headers/forwarded.test.py | 1 + .../headers/general-connection-failure-502.gold | 2 +- .../headers/good_request_after_bad.test.py | 5 +- tests/gold_tests/headers/hsts.test.py | 2 +- tests/gold_tests/headers/normalize_ae.test.py | 18 +- tests/gold_tests/headers/range.test.py | 22 +- tests/gold_tests/headers/syntax.test.py | 28 +- tests/gold_tests/headers/via.test.py | 69 +- tests/gold_tests/headers/via_uds.gold | 3 + tests/gold_tests/ip_allow/ip_allow.test.py | 2 +- .../{ip_allow.test.py => ip_allow_pp_uds.test.py} | 99 +- tests/gold_tests/logging/all_headers.test.py | 39 +- ...ustom-log.test.py => custom-log-pp-uds.test.py} | 33 +- tests/gold_tests/logging/custom-log.test.py | 1 + tests/gold_tests/logging/gold/custom_uds.gold | 8 + .../logging/gold/test_all_headers_uds.gold | 58 + tests/gold_tests/logging/log-field-json.test.py | 8 +- tests/gold_tests/logging/log-field.test.py | 6 +- tests/gold_tests/logging/log-filenames.test.py | 3 +- tests/gold_tests/logging/new_log_flds.test.py | 27 +- tests/gold_tests/logging/new_log_flds_observer.py | 4 +- tests/gold_tests/logging/pqsi-pqsp.test.py | 4 +- .../parent_config/parent_config_dest_ip.test.py | 2 +- .../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 | 7 +- .../zzz_strategies_peer2.test.py | 8 +- .../null_transform/gold/null_transform-200.gold | 2 +- .../null_transform/null_transform.test.py | 2 +- .../per_server_connection_max.test.py | 8 +- .../pluginTest/TSVConnFd/TSVConnFd.test.py | 6 +- .../cache_range_requests.test.py | 26 +- ...range_requests_cache_complete_responses.test.py | 30 +- .../cache_range_requests_cachekey.test.py | 6 +- .../cache_range_requests_cachekey_global.test.py | 2 +- .../cache_range_requests_ident.test.py | 16 +- .../cache_range_requests_ims.test.py | 8 +- .../pluginTest/cert_update/cert_update.test.py | 1 + .../client_context_dump.test.py | 2 +- tests/gold_tests/pluginTest/compress/compress.gold | 44 +- .../pluginTest/compress/compress.test.py | 28 +- .../pluginTest/cookie_remap/bucketcookie.test.py | 6 +- .../cookie_remap/collapseslashes.test.py | 3 +- .../pluginTest/cookie_remap/connector.test.py | 6 +- .../pluginTest/cookie_remap/existscookie.test.py | 6 +- .../pluginTest/cookie_remap/matchcookie.test.py | 6 +- .../pluginTest/cookie_remap/matchuri.test.py | 6 +- .../cookie_remap/notexistscookie.test.py | 6 +- .../cookie_remap/pcollapseslashes.test.py | 3 +- .../pluginTest/cookie_remap/psubstitute.test.py | 12 +- .../pluginTest/cookie_remap/regexcookie.test.py | 6 +- .../pluginTest/cookie_remap/setstatus.test.py | 6 +- .../pluginTest/cookie_remap/subcookie.test.py | 6 +- .../pluginTest/cookie_remap/substitute.test.py | 12 +- tests/gold_tests/pluginTest/esi/esi.test.py | 21 +- tests/gold_tests/pluginTest/esi/esi_304.test.py | 6 +- .../header_rewrite/gold/header_rewrite-303.gold | 2 +- .../header_rewrite/gold/header_rewrite-client.gold | 2 +- .../gold/header_rewrite-l_value.gold | 2 +- .../gold/header_rewrite_cond_method.gold | 2 +- .../header_rewrite/header_rewrite.test.py | 2 +- .../header_rewrite_cond_cache.test.py | 2 +- .../header_rewrite_cond_method.test.py | 5 +- .../header_rewrite_cond_ssn_txn_count.test.py | 2 +- .../header_rewrite/header_rewrite_l_value.test.py | 2 +- .../header_rewrite_set_body_from.test.py | 14 +- .../header_rewrite/header_rewrite_url.test.py | 5 +- .../header_rewrite/header_rewrite_url_glob.test.py | 4 +- .../pluginTest/lua/lua_client_hook.test.py | 2 +- .../pluginTest/lua/lua_debug_tags.test.py | 2 +- .../pluginTest/lua/lua_header_table.test.py | 2 +- .../pluginTest/lua/lua_states_stats.test.py | 2 +- .../pluginTest/lua/lua_watermark.test.py | 2 +- .../pluginTest/money_trace/money_trace.test.py | 26 +- .../money_trace/money_trace_global.test.py | 6 +- .../origin_server_auth/origin_server_auth.test.py | 4 +- .../pluginTest/polite_hook_wait/curl.gold | 1 + .../polite_hook_wait/polite_hook_wait.test.py | 10 +- .../pluginTest/prefetch/prefetch_bignum.gold | 2 +- .../pluginTest/prefetch/prefetch_bignum.test.py | 5 +- .../pluginTest/prefetch/prefetch_cmcd.test.py | 20 +- .../pluginTest/prefetch/prefetch_overflow.gold | 2 +- .../pluginTest/prefetch/prefetch_overflow.test.py | 4 +- .../pluginTest/prefetch/prefetch_simple.gold | 2 +- .../pluginTest/prefetch/prefetch_simple.test.py | 4 +- .../pluginTest/regex_remap/regex_remap.test.py | 10 +- .../regex_revalidate/regex_revalidate.test.py | 18 +- .../regex_revalidate/regex_revalidate_miss.test.py | 18 +- .../pluginTest/remap_stats/remap_stats.test.py | 4 +- .../remap_stats/remap_stats_post.test.py | 4 +- tests/gold_tests/pluginTest/slice/slice.test.py | 20 +- .../pluginTest/slice/slice_conditional.test.py | 12 +- .../pluginTest/slice/slice_crr_ident.test.py | 10 +- .../pluginTest/slice/slice_error.test.py | 8 +- .../pluginTest/slice/slice_ident.test.py | 14 +- .../pluginTest/slice/slice_prefetch.test.py | 12 +- .../pluginTest/slice/slice_regex.test.py | 8 +- .../pluginTest/slice/slice_selfhealing.test.py | 28 +- .../pluginTest/sslheaders/sslheaders.test.py | 1 + .../stats_over_http/stats_over_http.test.py | 2 +- .../pluginTest/test_hooks/body_buffer.test.py | 7 +- .../pluginTest/test_hooks/hook_add.test.py | 6 +- .../gold_tests/pluginTest/test_hooks/log_uds.gold | 12 + .../test_hooks/ssn_start_delay_hook.test.py | 6 +- .../pluginTest/test_hooks/test_hooks.test.py | 30 +- tests/gold_tests/pluginTest/tsapi/log_uds.gold | 106 + .../pluginTest/tsapi/test_TSVConnPPInfo.test.py | 5 +- tests/gold_tests/pluginTest/tsapi/tsapi.test.py | 24 +- .../pluginTest/uri_signing/uri_signing.test.py | 48 +- .../gold_tests/pluginTest/url_sig/url_sig.test.py | 57 +- tests/gold_tests/post/post-continue.test.py | 1 + tests/gold_tests/post/post-early-return.test.py | 1 + .../post_slow_server/post_slow_server.test.py | 3 +- .../post_slow_server_max_requests_in.test.py | 4 +- .../redirect/gold/number_of_redirections_0.gold | 14 +- .../redirect/gold/number_of_redirections_2.gold | 6 +- .../redirect/number_of_redirects.test.py | 2 +- tests/gold_tests/redirect/redirect_post.test.py | 5 +- .../gold_tests/remap/basic_conf_remap_yaml.test.py | 21 +- .../gold/200OK_test_uds.gold} | 9 +- .../remap/gold/remap-ws-metrics-uds.gold | 21 + tests/gold_tests/remap/regex_map.test.py | 2 +- tests/gold_tests/remap/remap_http.test.py | 29 +- tests/gold_tests/remap/remap_https.test.py | 1 + tests/gold_tests/remap/remap_ip_resolve.test.py | 4 +- tests/gold_tests/remap/remap_ws.test.py | 32 +- .../session_sharing/session_match.test.py | 3 +- tests/gold_tests/slow_post/server_abort.test.py | 1 + tests/gold_tests/timeout/active_timeout.test.py | 27 +- .../timeout/inactive_client_timeout.test.py | 17 +- tests/gold_tests/timeout/inactive_timeout.test.py | 22 +- tests/gold_tests/timeout/slow_server_uds.yaml | 83 + tests/gold_tests/tls/tls_client_verify3.test.py | 18 +- .../traffic_ctl/remap_inc/remap_inc.test.py | 2 +- tests/gold_tests/tunnel/tunnel_transform.test.py | 1 + tests/gold_tests/tunnel/txn_type.test.py | 1 + tools/clang-format.sh | 2 +- tools/cmake-format.sh | 2 +- tools/cripts/compiler.sh | 6 +- tools/gdb-helpers.py | 11 + tools/git/pre-commit | 4 +- tools/hrw4u/.gitignore | 2 + tools/hrw4u/bootstrap.sh | 14 +- tools/hrw4u/requirements.txt | 1 + tools/hrw4u/scripts/hrw4u | 23 +- tools/hrw4u/src/errors.py | 2 +- tools/hrw4u/src/symbols.py | 70 +- tools/hrw4u/src/visitor.py | 32 +- tools/hrw4u/tests/data/conds/cookie.ast.txt | 2 +- tools/hrw4u/tests/data/conds/cookie.output.txt | 2 +- tools/hrw4u/tests/data/conds/impl-expr.ast.txt | 1 + tools/hrw4u/tests/data/conds/impl-expr.input.txt | 5 + tools/hrw4u/tests/data/conds/impl-expr.output.txt | 4 + tools/hrw4u/tests/data/conds/long-if.ast.txt | 1 + tools/hrw4u/tests/data/conds/long-if.input.txt | 11 + tools/hrw4u/tests/data/conds/long-if.output.txt | 15 + 278 files changed, 140693 insertions(+), 1964 deletions(-)