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 7c4a7533228620e6df4228adb39e9ee56f6845f0 Merge: 58a2ea1f4f 64a8f60f11 Author: bneradt <bner...@yahooinc.com> AuthorDate: Tue Jul 1 12:14:34 2025 -0500 Merge master into 11-Dev .gitignore | 2 + CMakeLists.txt | 3 + doc/admin-guide/configuration/hrw4u.en.rst | 600 +++++++++++++++++++++ doc/admin-guide/configuration/index.en.rst | 1 + .../configuration/proxy-protocol.en.rst | 4 + doc/admin-guide/files/records.yaml.en.rst | 33 +- doc/admin-guide/logging/formatting.en.rst | 11 +- doc/admin-guide/plugins/esi.en.rst | 4 +- doc/admin-guide/plugins/header_rewrite.en.rst | 159 ++++-- doc/admin-guide/plugins/stats_over_http.en.rst | 35 +- doc/developer-guide/config-vars.en.rst | 2 +- doc/developer-guide/jsonrpc/jsonrpc-api.en.rst | 84 +++ include/iocore/net/TLSBasicSupport.h | 1 + include/iocore/utils/Machine.h | 9 +- include/mgmt/config/FileManager.h | 2 - include/mgmt/rpc/handlers/server/Server.h | 1 + include/proxy/IPAllow.h | 4 + include/proxy/ProxySession.h | 3 +- include/proxy/hdrs/HTTP.h | 152 ++---- include/proxy/hdrs/URL.h | 230 ++++---- include/proxy/http/HttpConfig.h | 4 + include/proxy/http/HttpSM.h | 8 + include/proxy/http/HttpUserAgent.h | 15 + include/proxy/logging/LogAccess.h | 2 + include/records/RecCore.h | 2 +- include/tscore/SnowflakeID.h | 270 ++++++++++ include/tscore/ink_config.h.cmake.in | 3 + plugins/esi/esi.cc | 123 +++-- plugins/header_rewrite/header_rewrite.cc | 154 +++--- plugins/header_rewrite/lulu.cc | 1 - plugins/header_rewrite/lulu.h | 4 +- plugins/header_rewrite/matcher.h | 36 +- plugins/header_rewrite/operators.cc | 4 +- plugins/header_rewrite/parser.cc | 131 ++++- plugins/header_rewrite/parser.h | 98 +++- plugins/header_rewrite/ruleset.cc | 29 +- plugins/header_rewrite/ruleset.h | 117 ++-- plugins/healthchecks/healthchecks.cc | 48 +- plugins/stats_over_http/stats_over_http.cc | 278 +++++++--- src/api/InkAPI.cc | 71 ++- src/api/InkAPIInternal.cc | 186 +++---- src/iocore/cache/Cache.cc | 6 +- src/iocore/cache/CacheDir.cc | 168 +++--- src/iocore/cache/CacheEvacuateDocVC.cc | 8 +- src/iocore/cache/CacheProcessor.cc | 4 +- src/iocore/cache/CacheRead.cc | 35 +- src/iocore/cache/CacheVC.cc | 18 +- src/iocore/cache/CacheWrite.cc | 18 +- src/iocore/cache/P_CacheDir.h | 42 +- src/iocore/cache/P_CacheInternal.h | 24 +- src/iocore/cache/Stripe.cc | 4 +- src/iocore/cache/StripeSM.cc | 12 +- .../unit_tests/test_Alternate_L_to_S_remove_L.cc | 4 +- .../unit_tests/test_Alternate_L_to_S_remove_S.cc | 4 +- .../unit_tests/test_Alternate_S_to_L_remove_L.cc | 4 +- .../unit_tests/test_Alternate_S_to_L_remove_S.cc | 4 +- src/iocore/cache/unit_tests/test_CacheDir.cc | 60 +-- src/iocore/net/P_SSLNetVConnection.h | 80 ++- src/iocore/net/SNIActionPerformer.cc | 16 +- src/iocore/net/SSLNetVConnection.cc | 185 ++++--- src/iocore/net/TLSBasicSupport.cc | 21 + src/iocore/utils/Machine.cc | 41 +- src/mgmt/config/FileManager.cc | 58 +- src/mgmt/rpc/handlers/server/Server.cc | 81 +++ src/proxy/ControlBase.cc | 12 +- src/proxy/FetchSM.cc | 3 +- src/proxy/IPAllow.cc | 32 +- src/proxy/ParentConsistentHash.cc | 10 +- src/proxy/ParentSelection.cc | 8 +- src/proxy/Transform.cc | 2 +- src/proxy/hdrs/HTTP.cc | 280 ++++------ src/proxy/hdrs/HeaderValidator.cc | 3 +- src/proxy/hdrs/URL.cc | 455 +++++++++------- src/proxy/hdrs/VersionConverter.cc | 13 +- src/proxy/hdrs/unit_tests/test_HdrHeap.cc | 6 +- src/proxy/hdrs/unit_tests/test_URL.cc | 6 +- src/proxy/http/HttpConfig.cc | 6 +- src/proxy/http/HttpDebugNames.cc | 18 +- src/proxy/http/HttpSM.cc | 107 ++-- src/proxy/http/HttpSessionAccept.cc | 18 +- src/proxy/http/HttpTransact.cc | 137 +++-- src/proxy/http/HttpTransactHeaders.cc | 22 +- src/proxy/http/RegressionHttpTransact.cc | 40 +- src/proxy/http/remap/NextHopConsistentHash.cc | 39 +- src/proxy/http/remap/RemapConfig.cc | 103 ++-- src/proxy/http/remap/RemapProcessor.cc | 17 +- src/proxy/http/remap/UrlMappingPathIndex.cc | 23 +- src/proxy/http/remap/UrlRewrite.cc | 133 +++-- src/proxy/http2/Http2ConnectionState.cc | 27 +- src/proxy/http2/Http2SessionAccept.cc | 16 +- src/proxy/http2/Http2Stream.cc | 27 +- src/proxy/logging/Log.cc | 10 + src/proxy/logging/LogAccess.cc | 36 +- src/records/P_RecCore.cc | 2 +- src/records/RecordsConfig.cc | 15 + src/traffic_ctl/CtrlCommands.cc | 3 + src/traffic_ctl/CtrlPrinters.cc | 9 +- src/traffic_ctl/CtrlPrinters.h | 2 + src/traffic_ctl/TrafficCtlStatus.h | 28 + src/traffic_ctl/traffic_ctl.cc | 15 +- src/traffic_server/RpcAdminPubHandlers.cc | 3 +- src/traffic_server/traffic_server.cc | 4 +- src/tscore/CMakeLists.txt | 2 + src/tscore/SnowflakeID.cc | 147 +++++ src/tscore/unit_tests/test_SnowflakeID.cc | 229 ++++++++ tests/Pipfile | 3 + .../gold/serve_stale_dns_fail.gold | 0 .../proxy_serve_stale.test.py | 0 .../proxy_serve_stale_dns_fail.test.py | 4 +- .../negative-revalidating-enabled.replay.yaml | 16 +- .../replay/negative-revalidating-list.replay.yaml | 7 +- .../replay/proxy_serve_stale.replay.yaml | 29 +- tests/gold_tests/h2/clients/h2empty_data_frame.py | 128 +++++ tests/gold_tests/h2/http2_empty_data_frame.test.py | 71 +++ tests/gold_tests/ip_allow/ip_allow.test.py | 24 +- .../replays/http_proxy_protocol.replay.yaml} | 82 ++- tests/gold_tests/logging/new_log_flds.test.py | 5 +- tests/gold_tests/logging/new_log_flds_observer.py | 25 +- .../per_server_connection_max.test.py | 16 +- .../pluginTest/esi/esi_nested_include.test.py | 136 +++++ .../pluginTest/esi/gold/nested_include_body.gold | 12 + .../gold/{ext-sets.gold => cond-elif.gold} | 1 + .../pluginTest/header_rewrite/gold/ext-sets.gold | 1 + .../header_rewrite/gold/header_rewrite-client.gold | 1 + .../header_rewrite/header_rewrite_url.test.py | 14 +- .../header_rewrite/rules/rule_client.conf | 11 +- tests/gold_tests/pluginTest/healthchecks/acme | 17 + tests/gold_tests/pluginTest/healthchecks/acme-ssl | 17 + .../pluginTest/healthchecks/healthchecks.test.py | 148 +++++ .../gold/stats_over_http_0_stdout.gold | 4 - ...stderr.gold => stats_over_http_csv_stderr.gold} | 4 +- ...tderr.gold => stats_over_http_json_stderr.gold} | 2 +- ...gold => stats_over_http_prometheus_stderr.gold} | 4 +- .../stats_over_http/prometheus_stats_ingester.py | 117 ++++ .../stats_over_http/stats_over_http.test.py | 101 +++- tests/gold_tests/remap/remap_acl.test.py | 93 +++- .../remap_acl_get_post_allowed_pp.replay.yaml | 132 +++++ tests/gold_tests/tls/gold/tls-tunnel-metrics.gold | 12 +- tests/gold_tests/tls/receive_split_client_hello.py | 129 +++++ .../tls/replay/ip_allow_proxy.replay.yaml | 113 ++++ tests/gold_tests/tls/split_client_hello.py | 181 +++++++ tests/gold_tests/tls/tls_sni_ip_allow.test.py | 38 +- tests/gold_tests/tls/tls_tunnel.test.py | 68 ++- .../traffic_ctl/traffic_ctl_config_output.test.py | 3 + .../traffic_ctl/traffic_ctl_server_output.test.py | 16 + .../traffic_ctl/traffic_ctl_test_utils.py | 65 ++- tools/hrw4u/Makefile | 81 +++ tests/Pipfile => tools/hrw4u/bootstrap.sh | 53 +- tools/hrw4u/grammar/hrw4u.g4 | 232 ++++++++ tests/Pipfile => tools/hrw4u/pyproject.toml | 58 +- tests/Pipfile => tools/hrw4u/requirements.txt | 49 +- tools/hrw4u/scripts/hrw4u | 87 +++ tools/hrw4u/scripts/testcase.py | 138 +++++ tests/Pipfile => tools/hrw4u/setup.py | 68 +-- tests/Pipfile => tools/hrw4u/src/__init__.py | 46 +- tools/hrw4u/src/errors.py | 77 +++ tools/hrw4u/src/states.py | 90 ++++ tools/hrw4u/src/symbols.py | 288 ++++++++++ tools/hrw4u/src/types.py | 85 +++ tools/hrw4u/src/validation.py | 178 ++++++ tools/hrw4u/src/visitor.py | 471 ++++++++++++++++ tools/hrw4u/tests/data/conds/access.ast.txt | 1 + tools/hrw4u/tests/data/conds/access.input.txt | 5 + tools/hrw4u/tests/data/conds/access.output.txt | 3 + tools/hrw4u/tests/data/conds/cache.ast.txt | 1 + tools/hrw4u/tests/data/conds/cache.input.txt | 11 + tools/hrw4u/tests/data/conds/cache.output.txt | 7 + tools/hrw4u/tests/data/conds/capture.ast.txt | 1 + tools/hrw4u/tests/data/conds/capture.input.txt | 5 + tools/hrw4u/tests/data/conds/capture.output.txt | 4 + tools/hrw4u/tests/data/conds/cidr.ast.txt | 1 + tools/hrw4u/tests/data/conds/cidr.input.txt | 5 + tools/hrw4u/tests/data/conds/cidr.output.txt | 3 + tools/hrw4u/tests/data/conds/cookie.ast.txt | 1 + tools/hrw4u/tests/data/conds/cookie.input.txt | 10 + tools/hrw4u/tests/data/conds/cookie.output.txt | 7 + tools/hrw4u/tests/data/conds/from-url.ast.txt | 1 + tools/hrw4u/tests/data/conds/from-url.input.txt | 5 + tools/hrw4u/tests/data/conds/from-url.output.txt | 3 + tools/hrw4u/tests/data/conds/geo.ast.txt | 1 + tools/hrw4u/tests/data/conds/geo.input.txt | 8 + tools/hrw4u/tests/data/conds/geo.output.txt | 6 + tools/hrw4u/tests/data/conds/http-cntl.ast.txt | 1 + tools/hrw4u/tests/data/conds/http-cntl.input.txt | 6 + tools/hrw4u/tests/data/conds/http-cntl.output.txt | 4 + tools/hrw4u/tests/data/conds/if-elif.ast.txt | 1 + tools/hrw4u/tests/data/conds/if-elif.input.txt | 11 + tools/hrw4u/tests/data/conds/if-elif.output.txt | 11 + tools/hrw4u/tests/data/conds/inbound.ast.txt | 1 + tools/hrw4u/tests/data/conds/inbound.input.txt | 14 + tools/hrw4u/tests/data/conds/inbound.output.txt | 12 + tools/hrw4u/tests/data/conds/internal.ast.txt | 1 + tools/hrw4u/tests/data/conds/internal.input.txt | 5 + tools/hrw4u/tests/data/conds/internal.output.txt | 3 + tools/hrw4u/tests/data/conds/ip.ast.txt | 1 + tools/hrw4u/tests/data/conds/ip.input.txt | 8 + tools/hrw4u/tests/data/conds/ip.output.txt | 6 + tools/hrw4u/tests/data/conds/method.ast.txt | 1 + tools/hrw4u/tests/data/conds/method.input.txt | 5 + tools/hrw4u/tests/data/conds/method.output.txt | 3 + tools/hrw4u/tests/data/conds/multi-if.ast.txt | 1 + tools/hrw4u/tests/data/conds/multi-if.input.txt | 15 + tools/hrw4u/tests/data/conds/multi-if.output.txt | 13 + tools/hrw4u/tests/data/conds/now.ast.txt | 1 + tools/hrw4u/tests/data/conds/now.input.txt | 12 + tools/hrw4u/tests/data/conds/now.output.txt | 10 + tools/hrw4u/tests/data/conds/outbound.ast.txt | 1 + tools/hrw4u/tests/data/conds/outbound.input.txt | 5 + tools/hrw4u/tests/data/conds/outbound.output.txt | 3 + tools/hrw4u/tests/data/conds/split-if.ast.txt | 1 + tools/hrw4u/tests/data/conds/split-if.input.txt | 10 + tools/hrw4u/tests/data/conds/split-if.output.txt | 10 + tools/hrw4u/tests/data/conds/to-url.ast.txt | 1 + tools/hrw4u/tests/data/conds/to-url.input.txt | 5 + tools/hrw4u/tests/data/conds/to-url.output.txt | 3 + tools/hrw4u/tests/data/conds/true_false.ast.txt | 1 + tools/hrw4u/tests/data/conds/true_false.input.txt | 5 + tools/hrw4u/tests/data/conds/true_false.output.txt | 4 + tools/hrw4u/tests/data/conds/txn-count.ast.txt | 1 + tools/hrw4u/tests/data/conds/txn-count.input.txt | 11 + tools/hrw4u/tests/data/conds/txn-count.output.txt | 9 + .../hrw4u/tests/data/examples/add-cc-path.ast.txt | 1 + .../tests/data/examples/add-cc-path.input.txt | 13 + .../tests/data/examples/add-cc-path.output.txt | 9 + tools/hrw4u/tests/data/examples/conn-drain.ast.txt | 1 + .../hrw4u/tests/data/examples/conn-drain.input.txt | 5 + .../tests/data/examples/conn-drain.output.txt | 3 + tools/hrw4u/tests/data/examples/dbg-req.ast.txt | 1 + tools/hrw4u/tests/data/examples/dbg-req.input.txt | 5 + tools/hrw4u/tests/data/examples/dbg-req.output.txt | 3 + tools/hrw4u/tests/data/examples/hdr-exists.ast.txt | 1 + .../hrw4u/tests/data/examples/hdr-exists.input.txt | 5 + .../tests/data/examples/hdr-exists.output.txt | 5 + tools/hrw4u/tests/data/examples/hsts.ast.txt | 1 + tools/hrw4u/tests/data/examples/hsts.input.txt | 5 + tools/hrw4u/tests/data/examples/hsts.output.txt | 4 + tools/hrw4u/tests/data/examples/int-header.ast.txt | 1 + .../hrw4u/tests/data/examples/int-header.input.txt | 3 + .../tests/data/examples/int-header.output.txt | 2 + .../tests/data/examples/meth-resp-hdr.ast.txt | 1 + .../tests/data/examples/meth-resp-hdr.input.txt | 3 + .../tests/data/examples/meth-resp-hdr.output.txt | 2 + .../hrw4u/tests/data/examples/norm_status.ast.txt | 1 + .../tests/data/examples/norm_status.input.txt | 5 + .../tests/data/examples/norm_status.output.txt | 4 + tools/hrw4u/tests/data/examples/path-ext.ast.txt | 1 + tools/hrw4u/tests/data/examples/path-ext.input.txt | 5 + .../hrw4u/tests/data/examples/path-ext.output.txt | 3 + .../hrw4u/tests/data/examples/rem_org_auth.ast.txt | 1 + .../tests/data/examples/rem_org_auth.input.txt | 4 + .../tests/data/examples/rem_org_auth.output.txt | 3 + tools/hrw4u/tests/data/examples/rm-cc-out.ast.txt | 1 + .../hrw4u/tests/data/examples/rm-cc-out.input.txt | 4 + .../hrw4u/tests/data/examples/rm-cc-out.output.txt | 3 + tools/hrw4u/tests/data/examples/rm-int-hdr.ast.txt | 1 + .../hrw4u/tests/data/examples/rm-int-hdr.input.txt | 6 + .../tests/data/examples/rm-int-hdr.output.txt | 4 + tools/hrw4u/tests/data/examples/rm-query.ast.txt | 1 + tools/hrw4u/tests/data/examples/rm-query.input.txt | 11 + .../hrw4u/tests/data/examples/rm-query.output.txt | 8 + tools/hrw4u/tests/data/examples/run-plugin.ast.txt | 1 + .../hrw4u/tests/data/examples/run-plugin.input.txt | 5 + .../tests/data/examples/run-plugin.output.txt | 3 + tools/hrw4u/tests/data/examples/teapots.ast.txt | 1 + tools/hrw4u/tests/data/examples/teapots.input.txt | 5 + tools/hrw4u/tests/data/examples/teapots.output.txt | 3 + tools/hrw4u/tests/data/examples/useless.ast.txt | 1 + tools/hrw4u/tests/data/examples/useless.input.txt | 7 + tools/hrw4u/tests/data/examples/useless.output.txt | 7 + tools/hrw4u/tests/data/examples/uuid.ast.txt | 1 + tools/hrw4u/tests/data/examples/uuid.input.txt | 5 + tools/hrw4u/tests/data/examples/uuid.output.txt | 4 + tools/hrw4u/tests/data/examples/x-debug.ast.txt | 1 + tools/hrw4u/tests/data/examples/x-debug.input.txt | 19 + tools/hrw4u/tests/data/examples/x-debug.output.txt | 13 + .../data/hooks/invalid_section.fail.error.txt | 3 + .../data/hooks/invalid_section.fail.input.txt | 5 + tools/hrw4u/tests/data/hooks/order.fail.error.txt | 3 + tools/hrw4u/tests/data/hooks/order.fail.input.txt | 9 + tools/hrw4u/tests/data/hooks/read_response.ast.txt | 1 + .../hrw4u/tests/data/hooks/read_response.input.txt | 5 + .../tests/data/hooks/read_response.output.txt | 3 + tools/hrw4u/tests/data/hooks/remap.ast.txt | 1 + tools/hrw4u/tests/data/hooks/remap.input.txt | 7 + tools/hrw4u/tests/data/hooks/remap.output.txt | 5 + tools/hrw4u/tests/data/hooks/send_request.ast.txt | 1 + .../hrw4u/tests/data/hooks/send_request.input.txt | 5 + .../hrw4u/tests/data/hooks/send_request.output.txt | 3 + tools/hrw4u/tests/data/hooks/send_response.ast.txt | 1 + .../hrw4u/tests/data/hooks/send_response.input.txt | 5 + .../tests/data/hooks/send_response.output.txt | 3 + tools/hrw4u/tests/data/ops/dscp.ast.txt | 1 + tools/hrw4u/tests/data/ops/dscp.input.txt | 5 + tools/hrw4u/tests/data/ops/dscp.output.txt | 3 + tools/hrw4u/tests/data/ops/expansion.ast.txt | 1 + tools/hrw4u/tests/data/ops/expansion.input.txt | 13 + tools/hrw4u/tests/data/ops/expansion.output.txt | 7 + tools/hrw4u/tests/data/ops/no-op.ast.txt | 1 + tools/hrw4u/tests/data/ops/no-op.input.txt | 3 + tools/hrw4u/tests/data/ops/no-op.output.txt | 2 + tools/hrw4u/tests/data/ops/redirect.ast.txt | 1 + tools/hrw4u/tests/data/ops/redirect.input.txt | 5 + tools/hrw4u/tests/data/ops/redirect.output.txt | 3 + tools/hrw4u/tests/data/ops/set-body.ast.txt | 1 + tools/hrw4u/tests/data/ops/set-body.input.txt | 17 + tools/hrw4u/tests/data/ops/set-body.output.txt | 9 + tools/hrw4u/tests/data/ops/set-conf.ast.txt | 1 + tools/hrw4u/tests/data/ops/set-conf.input.txt | 5 + tools/hrw4u/tests/data/ops/set-conf.output.txt | 3 + tools/hrw4u/tests/data/ops/skip-remap.ast.txt | 1 + tools/hrw4u/tests/data/ops/skip-remap.input.txt | 5 + tools/hrw4u/tests/data/ops/skip-remap.output.txt | 3 + tools/hrw4u/tests/data/ops/status.ast.txt | 1 + tools/hrw4u/tests/data/ops/status.input.txt | 16 + tools/hrw4u/tests/data/ops/status.output.txt | 8 + tools/hrw4u/tests/data/parser/no-vars.parser.txt | 6 + tools/hrw4u/tests/data/parser/top-block.parser.txt | 4 + tools/hrw4u/tests/data/vars/assign.ast.txt | 1 + tools/hrw4u/tests/data/vars/assign.input.txt | 8 + tools/hrw4u/tests/data/vars/assign.output.txt | 2 + tools/hrw4u/tests/data/vars/bad_var.fail.error.txt | 3 + tools/hrw4u/tests/data/vars/bad_var.fail.input.txt | 8 + tools/hrw4u/tests/data/vars/bool.ast.txt | 1 + tools/hrw4u/tests/data/vars/bool.input.txt | 9 + tools/hrw4u/tests/data/vars/bool.output.txt | 3 + tools/hrw4u/tests/data/vars/int16.ast.txt | 1 + tools/hrw4u/tests/data/vars/int16.input.txt | 9 + tools/hrw4u/tests/data/vars/int16.output.txt | 3 + tools/hrw4u/tests/data/vars/int8.ast.txt | 1 + tools/hrw4u/tests/data/vars/int8.input.txt | 9 + tools/hrw4u/tests/data/vars/int8.output.txt | 3 + .../tests/data/vars/vars_count.fail.error.txt | 3 + .../tests/data/vars/vars_count.fail.input.txt | 12 + .../hrw4u/tests/data/vars/vars_size.fail.error.txt | 3 + .../hrw4u/tests/data/vars/vars_size.fail.input.txt | 7 + .../hrw4u/tests/data/vars/vars_type.fail.error.txt | 3 + .../hrw4u/tests/data/vars/vars_type.fail.input.txt | 9 + tests/Pipfile => tools/hrw4u/tests/test_conds.py | 52 +- .../Pipfile => tools/hrw4u/tests/test_examples.py | 52 +- tests/Pipfile => tools/hrw4u/tests/test_hooks.py | 55 +- tests/Pipfile => tools/hrw4u/tests/test_ops.py | 52 +- tests/Pipfile => tools/hrw4u/tests/test_vars.py | 55 +- tools/hrw4u/tests/utils.py | 98 ++++ 343 files changed, 8567 insertions(+), 2341 deletions(-)