Updated Branches: refs/heads/master 8489d51a2 -> e8672a893
TS-1086: Avoid returning 304 to an unconditional request. Diagnosis and patch by Mohamad Khateeb. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e8672a89 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e8672a89 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e8672a89 Branch: refs/heads/master Commit: e8672a8934f468a4bf3fd34b3d573c783a5398cf Parents: 8489d51 Author: Nick Kew <[email protected]> Authored: Mon Sep 9 16:35:48 2013 +0100 Committer: Nick Kew <[email protected]> Committed: Mon Sep 9 16:38:35 2013 +0100 ---------------------------------------------------------------------- CHANGES | 3 +++ proxy/http/HttpTransact.cc | 7 +++++++ 2 files changed, 10 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e8672a89/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index a8b1318..1c7d948 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache Traffic Server 4.1.0 + *) [TS-1086] Avoid edge case returning 304 to an unconditional request. + Diagnosis and patch by Mohamad Khateeb. + *) [TS-2168] Make RecordsConfig.cc more inline with default builds. *) [TS-2174] traffic_shell/traffic_line miss some stats value http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e8672a89/proxy/http/HttpTransact.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc index e39e7e9..512a1cc 100644 --- a/proxy/http/HttpTransact.cc +++ b/proxy/http/HttpTransact.cc @@ -2853,13 +2853,20 @@ HttpTransact::handle_cache_write_lock(State* s) // we're tunneling response anyway if (remove_ims) { s->hdr_info.server_request.field_delete(MIME_FIELD_IF_MODIFIED_SINCE, MIME_LEN_IF_MODIFIED_SINCE); + s->hdr_info.server_request.field_delete(MIME_FIELD_IF_NONE_MATCH, MIME_LEN_IF_NONE_MATCH); MIMEField *c_ims = s->hdr_info.client_request.field_find(MIME_FIELD_IF_MODIFIED_SINCE, MIME_LEN_IF_MODIFIED_SINCE); + MIMEField *c_inm = s->hdr_info.client_request.field_find(MIME_FIELD_IF_NONE_MATCH, MIME_LEN_IF_NONE_MATCH); if (c_ims) { int len; const char *value = c_ims->value_get(&len); s->hdr_info.server_request.value_set(MIME_FIELD_IF_MODIFIED_SINCE, MIME_LEN_IF_MODIFIED_SINCE, value, len); } + if (c_inm) { + int len; + const char *value = c_inm->value_get(&len); + s->hdr_info.server_request.value_set(MIME_FIELD_IF_NONE_MATCH, MIME_LEN_IF_NONE_MATCH, value, len); + } } if (s->cache_info.write_lock_state == CACHE_WL_READ_RETRY) {
