cmcfarlen opened a new pull request, #13526: URL: https://github.com/apache/trafficserver/pull/13526
Fifth round of cherry-picks for the 10.2.0 release candidate, covering the PRs at "For v10.2.0" in the [ATS v10.2.x project](https://github.com/orgs/apache/projects/573). All picked with `git cherry-pick -x` in master merge order; every pick applied cleanly with no conflicts, and each commit's diffstat matches its master commit exactly. | PR | Title | |---|---| | #13517 | Bound `RegexMatches::operator[]` by what the match populated | | #13352 | prefetch: don't drop replacements for non-participating optional capture groups | | #13523 | Shut the client read side down per transaction, not per connection | **Merge order is load-bearing here even though no files overlap.** #13352's `replace()` relies on `matches[replIndex]` returning a non-null view for a capture group inside the match count that did not participate: ```cpp std::string_view dst = (replIndex < matchCount) ? matches[replIndex] : std::string_view{""}; PrefetchDebug("replacing '$%d' with '%.*s'", replIndex, static_cast<int>(dst.length()), dst.data()); ``` The `""` there covers only the out-of-range branch. The non-participating-but-in-range case is what #13517 fixes centrally, by returning `""` instead of a default-constructed `std::string_view` from `RegexMatches::operator[]`. #13441 — already on this branch — introduced that null-`data()` return, so picking #13352 without #13517 first would leave a null pointer reaching `"%.*s"` and `std::string::append`. #13517 merged four minutes before #13352 upstream, so master merge order gives the correct sequence. #13523 completes the other half of #12529: `state_watch_for_client_abort` reached past the transaction to the shared `NetVConnection` to half-close the client read side, which for HTTP/2 and HTTP/3 stopped the whole session from reading frames for every other stream. #12529 converted the two branches it touched but left the pre-existing `IO_SHUTDOWN_READ` call, and `HttpSM.cc` was the only site in the tree still doing that. Verified before pushing: every `Disk.*` attribute, `Test.*` helper and `Condition.*` used by the new tests exists on this branch — including `Test.AddAwaitFileContainsTestRun` and `Condition.HasProxyVerifierVersion('2.8.0')`, which this branch satisfies since it pins Proxy Verifier v3.1.3 — and all eight `proxy.config.*` records the new tests reference resolve in `RecordsConfig.cc`. No picked test reaches for a master-only config idiom (`ssl_multicert_yaml` or `storage_yaml`). Local build is clean and `ctest` is **167/167**. `cmake --build ... --target format` makes no changes. Draft so the full CI matrix runs against the picked set before the release branch moves; it will be landed by fast-forward. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
