You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by gb...@apache.org on 2020/09/09 14:43:07 UTC

svn commit: r1881590 - /httpd/httpd/trunk/modules/http/http_filters.c

Author: gbechis
Date: Wed Sep  9 14:43:07 2020
New Revision: 1881590

URL: http://svn.apache.org/viewvc?rev=1881590&view=rev
Log:
handle headers when replying a 304 following rfc7234
as discussed in bz 61820

Modified:
    httpd/httpd/trunk/modules/http/http_filters.c

Modified: httpd/httpd/trunk/modules/http/http_filters.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_filters.c?rev=1881590&r1=1881589&r2=1881590&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http/http_filters.c (original)
+++ httpd/httpd/trunk/modules/http/http_filters.c Wed Sep  9 14:43:07 2020
@@ -1427,25 +1427,21 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_
     h.bb = b2;
 
     if (r->status == HTTP_NOT_MODIFIED) {
-        apr_table_do((int (*)(void *, const char *, const char *)) form_header_field,
-                     (void *) &h, r->headers_out,
-                     "Connection",
-                     "Keep-Alive",
-                     "ETag",
-                     "Content-Location",
-                     "Expires",
-                     "Cache-Control",
-                     "Vary",
-                     "Warning",
-                     "WWW-Authenticate",
-                     "Proxy-Authenticate",
-                     "Set-Cookie",
-                     "Set-Cookie2",
-                     NULL);
-    }
-    else {
-        send_all_header_fields(&h, r);
+      /*
+       * List of headers that must not be updated on a 304 (or 206 partial content)
+       * https://tools.ietf.org/id/draft-ietf-httpbis-cache-08.txt
+       */
+      apr_table_unset(r->headers_out, "Content_Encoding");
+      apr_table_unset(r->headers_out, "Content_Length");
+      apr_table_unset(r->headers_out, "Content_MD5");
+      apr_table_unset(r->headers_out, "Content_Range");
+      apr_table_unset(r->headers_out, "ETag");
+      apr_table_unset(r->headers_out, "TE");
+      apr_table_unset(r->headers_out, "Trailer");
+      apr_table_unset(r->headers_out, "Transfer_Encoding");
+      apr_table_unset(r->headers_out, "Upgrade");
     }
+    send_all_header_fields(&h, r);
 
     terminate_header(b2);
 



Re: svn commit: r1881590 - /httpd/httpd/trunk/modules/http/http_filters.c

Posted by Giovanni Bechis <gb...@apache.org>.
On 9/10/20 4:14 PM, Ivan Zhakov wrote:
> 
> 
> On Wed, 9 Sep 2020 at 17:43, <gbechis@apache.org <ma...@apache.org>> wrote:
> 
>     Author: gbechis
>     Date: Wed Sep  9 14:43:07 2020
>     New Revision: 1881590
> 
>     URL: http://svn.apache.org/viewvc?rev=1881590&view=rev
>     Log:
>     handle headers when replying a 304 following rfc7234
>     as discussed in bz 61820
> 
>     Modified:
>         httpd/httpd/trunk/modules/http/http_filters.c
> 
>     Modified: httpd/httpd/trunk/modules/http/http_filters.c
>     URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_filters.c?rev=1881590&r1=1881589&r2=1881590&view=diff
>     ==============================================================================
>     --- httpd/httpd/trunk/modules/http/http_filters.c (original)
>     +++ httpd/httpd/trunk/modules/http/http_filters.c Wed Sep  9 14:43:07 2020
>     @@ -1427,25 +1427,21 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_
>          h.bb <http://h.bb> = b2;
> 
>          if (r->status == HTTP_NOT_MODIFIED) {
>     -        apr_table_do((int (*)(void *, const char *, const char *)) form_header_field,
>     -                     (void *) &h, r->headers_out,
>     -                     "Connection",
>     -                     "Keep-Alive",
>     -                     "ETag",
>     -                     "Content-Location",
>     -                     "Expires",
>     -                     "Cache-Control",
>     -                     "Vary",
>     -                     "Warning",
>     -                     "WWW-Authenticate",
>     -                     "Proxy-Authenticate",
>     -                     "Set-Cookie",
>     -                     "Set-Cookie2",
>     -                     NULL);
>     -    }
>     -    else {
>     -        send_all_header_fields(&h, r);
>     +      /*
>     +       * List of headers that must not be updated on a 304 (or 206 partial content)
>     +       * https://tools.ietf.org/id/draft-ietf-httpbis-cache-08.txt
>     +       */
>     +      apr_table_unset(r->headers_out, "Content_Encoding");
>     +      apr_table_unset(r->headers_out, "Content_Length");
>     +      apr_table_unset(r->headers_out, "Content_MD5");
>     +      apr_table_unset(r->headers_out, "Content_Range");
>     +      apr_table_unset(r->headers_out, "ETag");
>     +      apr_table_unset(r->headers_out, "TE");
>     +      apr_table_unset(r->headers_out, "Trailer");
>     +      apr_table_unset(r->headers_out, "Transfer_Encoding");
> 
>  Maybe I am missing some context, but header names use dash, not underscore. I.e Content-Encoding, not Content_Encoding.
> 
fixed in r1881624, thanks.
 Giovanni


Re: svn commit: r1881590 - /httpd/httpd/trunk/modules/http/http_filters.c

Posted by Ivan Zhakov <iv...@visualsvn.com>.
On Wed, 9 Sep 2020 at 17:43, <gb...@apache.org> wrote:

> Author: gbechis
> Date: Wed Sep  9 14:43:07 2020
> New Revision: 1881590
>
> URL: http://svn.apache.org/viewvc?rev=1881590&view=rev
> Log:
> handle headers when replying a 304 following rfc7234
> as discussed in bz 61820
>
> Modified:
>     httpd/httpd/trunk/modules/http/http_filters.c
>
> Modified: httpd/httpd/trunk/modules/http/http_filters.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/http_filters.c?rev=1881590&r1=1881589&r2=1881590&view=diff
>
> ==============================================================================
> --- httpd/httpd/trunk/modules/http/http_filters.c (original)
> +++ httpd/httpd/trunk/modules/http/http_filters.c Wed Sep  9 14:43:07 2020
> @@ -1427,25 +1427,21 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_
>      h.bb = b2;
>
>      if (r->status == HTTP_NOT_MODIFIED) {
> -        apr_table_do((int (*)(void *, const char *, const char *))
> form_header_field,
> -                     (void *) &h, r->headers_out,
> -                     "Connection",
> -                     "Keep-Alive",
> -                     "ETag",
> -                     "Content-Location",
> -                     "Expires",
> -                     "Cache-Control",
> -                     "Vary",
> -                     "Warning",
> -                     "WWW-Authenticate",
> -                     "Proxy-Authenticate",
> -                     "Set-Cookie",
> -                     "Set-Cookie2",
> -                     NULL);
> -    }
> -    else {
> -        send_all_header_fields(&h, r);
> +      /*
> +       * List of headers that must not be updated on a 304 (or 206
> partial content)
> +       * https://tools.ietf.org/id/draft-ietf-httpbis-cache-08.txt
> +       */
> +      apr_table_unset(r->headers_out, "Content_Encoding");
> +      apr_table_unset(r->headers_out, "Content_Length");
> +      apr_table_unset(r->headers_out, "Content_MD5");
> +      apr_table_unset(r->headers_out, "Content_Range");
> +      apr_table_unset(r->headers_out, "ETag");
> +      apr_table_unset(r->headers_out, "TE");
> +      apr_table_unset(r->headers_out, "Trailer");
> +      apr_table_unset(r->headers_out, "Transfer_Encoding");
>
 Maybe I am missing some context, but header names use dash, not
underscore. I.e Content-Encoding, not Content_Encoding.


-- 
Ivan Zhakov