From bcf652f6fc6eb0443ad231f91cf05150ccee8b6c Mon Sep 17 00:00:00 2001 From: Ruediger Pluem Date: Wed, 17 Dec 2014 15:39:15 +0000 Subject: [PATCH] * Fix If-Match handling: - We need to fail if we do NOT match. - ETag comparison only makes sense if we have an ETag PR: 57358 Submitted by: Kunihiko Sakamoto Reviewed by: rpluem git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1646282 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 5 ++++- modules/http/http_protocol.c | 7 ++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 595193a2a2..05541f82a6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 - + + *) mod_http: Fix incorrect If-Match handling. PR 57358 + [Kunihiko Sakamoto ] + *) mod_proxy_ajp: Fix handling of the default port (8009) in the ProxyPass and configurations. PR 57259. [Yann Ylavic]. diff --git a/modules/http/http_protocol.c b/modules/http/http_protocol.c index a7f30fcf98..fc7ec6ccbe 100644 --- a/modules/http/http_protocol.c +++ b/modules/http/http_protocol.c @@ -316,8 +316,8 @@ AP_DECLARE(ap_condition_e) ap_condition_if_match(request_rec *r, */ if ((if_match = apr_table_get(r->headers_in, "If-Match")) != NULL) { if (if_match[0] == '*' - || ((etag = apr_table_get(headers, "ETag")) == NULL - && !ap_find_etag_strong(r->pool, if_match, etag))) { + || ((etag = apr_table_get(headers, "ETag")) != NULL + && ap_find_etag_strong(r->pool, if_match, etag))) { return AP_CONDITION_STRONG; } else { @@ -552,9 +552,6 @@ AP_DECLARE(int) ap_meets_conditions(request_rec *r) */ cond = ap_condition_if_match(r, r->headers_out); if (AP_CONDITION_NOMATCH == cond) { - not_modified = 0; - } - else if (cond >= AP_CONDITION_WEAK) { return HTTP_PRECONDITION_FAILED; } -- 2.40.0