From c465a8137d9771d03e8633b29a3f1c9b37d869a9 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Mon, 26 Jun 2017 12:20:14 +0000 Subject: [PATCH] Merge r1799784, r1799786 from trunk: Since r1753257, "HEAD" method is registered into the registry hash with the M_GET ID. (r1757672 in 2.4.x) We iterate over all the values of the registery, so there is no need anymore to have a special case for "HEAD" in 'make_allow()'. It has its own entry now. With the current code, we have "HEAD" 3 times in the Allow Header field. This is because we find M_GET 2 times in the registry hash. The first one gives "GET" and "HEAD" (as the special handling), and the second "HEAD" and "HEAD" (as the special handling). BTW, use APR_ARRAY_PUSH instead of hand coding it, in oder to have the code more readable. PR 61207 Add CHANGE entry Submitted by: jailletc36 Reviewed by: jailletc36, rpluem, jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1799890 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ STATUS | 6 ------ modules/http/http_protocol.c | 6 +----- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/CHANGES b/CHANGES index d655fd6bee..f647de2b4c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,11 @@ -*- coding: utf-8 -*- + Changes with Apache 2.4.27 + *) core: Avoid duplicate HEAD in Allow header. + This is a regression in 2.4.24 (unreleased), 2.4.25 and 2.4.26. + PR 61207. [Christophe Jaillet] Changes with Apache 2.4.26 diff --git a/STATUS b/STATUS index 5ed367e4b1..1f75f6aaac 100644 --- a/STATUS +++ b/STATUS @@ -116,12 +116,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) core: Avoid duplicate HEAD in Allow header. PR 61207. - trunk patch: http://svn.apache.org/r1799784 - http://svn.apache.org/r1799786 (CHANGES entry) - 2.4.x patch: svn merge -c 1799784,1799786 ^/httpd/httpd/trunk . - +1: jailletc36, rpluem, jim - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/http/http_protocol.c b/modules/http/http_protocol.c index 7c465777f2..8543fd1925 100644 --- a/modules/http/http_protocol.c +++ b/modules/http/http_protocol.c @@ -1037,11 +1037,7 @@ static char *make_allow(request_rec *r) apr_hash_this(hi, &key, NULL, &val); if ((mask & (AP_METHOD_BIT << *(int *)val)) != 0) { - *(const char **)apr_array_push(allow) = key; - - /* the M_GET method actually refers to two methods */ - if (*(int *)val == M_GET) - *(const char **)apr_array_push(allow) = "HEAD"; + APR_ARRAY_PUSH(allow, const char *) = key; } } -- 2.40.0