mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
* 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 <ksakamoto google.com> Reviewed by: rpluem git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1646282 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,6 +1,9 @@
|
|||||||
-*- coding: utf-8 -*-
|
-*- coding: utf-8 -*-
|
||||||
Changes with Apache 2.5.0
|
Changes with Apache 2.5.0
|
||||||
|
|
||||||
|
*) mod_http: Fix incorrect If-Match handling. PR 57358
|
||||||
|
[Kunihiko Sakamoto <ksakamoto google.com>]
|
||||||
|
|
||||||
*) mod_proxy_ajp: Fix handling of the default port (8009) in the
|
*) mod_proxy_ajp: Fix handling of the default port (8009) in the
|
||||||
ProxyPass and <Proxy> configurations. PR 57259. [Yann Ylavic].
|
ProxyPass and <Proxy> configurations. PR 57259. [Yann Ylavic].
|
||||||
|
|
||||||
|
@@ -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 = apr_table_get(r->headers_in, "If-Match")) != NULL) {
|
||||||
if (if_match[0] == '*'
|
if (if_match[0] == '*'
|
||||||
|| ((etag = apr_table_get(headers, "ETag")) == NULL
|
|| ((etag = apr_table_get(headers, "ETag")) != NULL
|
||||||
&& !ap_find_etag_strong(r->pool, if_match, etag))) {
|
&& ap_find_etag_strong(r->pool, if_match, etag))) {
|
||||||
return AP_CONDITION_STRONG;
|
return AP_CONDITION_STRONG;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -552,9 +552,6 @@ AP_DECLARE(int) ap_meets_conditions(request_rec *r)
|
|||||||
*/
|
*/
|
||||||
cond = ap_condition_if_match(r, r->headers_out);
|
cond = ap_condition_if_match(r, r->headers_out);
|
||||||
if (AP_CONDITION_NOMATCH == cond) {
|
if (AP_CONDITION_NOMATCH == cond) {
|
||||||
not_modified = 0;
|
|
||||||
}
|
|
||||||
else if (cond >= AP_CONDITION_WEAK) {
|
|
||||||
return HTTP_PRECONDITION_FAILED;
|
return HTTP_PRECONDITION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user