This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 8d53cb6da80fcfa5ac039aa5327d36de6044edcb Author: Chris McFarlen <[email protected]> AuthorDate: Fri May 10 16:09:31 2024 -0600 Fix case where 206 could be returned for range revalidates (#11308) * Fix case where 206 could be returned for range revalidates * remove line (cherry picked from commit 1da003e605efffabb221efe52285fba51807cf02) --- src/proxy/http/HttpSM.cc | 11 +++++++---- .../cache/replay/cache-range-response.replay.yaml | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/proxy/http/HttpSM.cc b/src/proxy/http/HttpSM.cc index b5dc71651e..b5234f1d39 100644 --- a/src/proxy/http/HttpSM.cc +++ b/src/proxy/http/HttpSM.cc @@ -4847,10 +4847,13 @@ HttpSM::do_range_setup_if_necessary() } } else { // if revalidating and cache is stale we want to transform - if (t_state.cache_info.action == HttpTransact::CACHE_DO_REPLACE && - t_state.hdr_info.server_response.status_get() == HTTP_STATUS_OK) { - Dbg(dbg_ctl_http_range, "Serving transform after stale cache re-serve"); - do_transform = true; + if (t_state.cache_info.action == HttpTransact::CACHE_DO_REPLACE) { + if (t_state.hdr_info.server_response.status_get() == HTTP_STATUS_OK) { + Dbg(dbg_ctl_http_range, "Serving transform after stale cache re-serve"); + do_transform = true; + } else { + Dbg(dbg_ctl_http_range, "Not transforming after revalidate"); + } } else if (cache_sm.cache_read_vc && cache_sm.cache_read_vc->is_pread_capable()) { // If only one range entry and pread is capable, no need transform range t_state.range_setup = HttpTransact::RANGE_NOT_TRANSFORM_REQUESTED; diff --git a/tests/gold_tests/cache/replay/cache-range-response.replay.yaml b/tests/gold_tests/cache/replay/cache-range-response.replay.yaml index 768f0ddd18..0bb4d2271e 100644 --- a/tests/gold_tests/cache/replay/cache-range-response.replay.yaml +++ b/tests/gold_tests/cache/replay/cache-range-response.replay.yaml @@ -111,3 +111,23 @@ sessions: fields: - [ Content-Range, { value: "bytes 0-10/100", as: equal}] - [ Via, { value: "uIcSsSfUpSeN:t cCSp sS", as: contains }] + # Revalidate and replace still returns appropriate server error + - client-request: + method: "GET" + version: "1.1" + url: /some/path + headers: + fields: + - [ Host, example.com ] + - [ uuid, 5 ] + - [ Range, bytes=0-10 ] + - [ If-Modified-Since, "Wed, 16 Mar 2022 22:52:09 GMT"] + server-response: + status: 404 + reason: Not Found + headers: + fields: + - [ Content-Length, 10 ] + - [ Cache-Control, max-age=300 ] + proxy-response: + status: 404
