Welcome! Log In Create A New Profile

Advanced

Re: [PATCH 11 of 20] Upstream: simplified Content-Encoding handling

Maxim Dounin
May 12, 2022 08:20PM
Hello!

On Thu, May 12, 2022 at 12:00:32AM +0400, Sergey Kandaurov wrote:

> On Thu, Apr 21, 2022 at 01:18:51AM +0300, Maxim Dounin wrote:
> > # HG changeset patch
> > # User Maxim Dounin <mdounin@mdounin.ru>
> > # Date 1650492330 -10800
> > # Thu Apr 21 01:05:30 2022 +0300
> > # Node ID 6441069e16a0c4755c662bc07bdcb0960c9ac04a
> > # Parent ee1a8a4aa2c262d25a4aa871cda4f6c4515fc85c
> > Upstream: simplified Content-Encoding handling.
> >
> > Since introduction of offset handling in ngx_http_upstream_copy_header_line()
> > in revision 573:58475592100c, the ngx_http_upstream_copy_content_encoding()
> > function is no longer needed, as its behaviour is exactly equivalent to
> > ngx_http_upstream_copy_header_line() with appropriate offset. As such,
> > the ngx_http_upstream_copy_content_encoding() function was removed.
> >
> > Further, the u->headers_in.content_encoding field is not used anywhere,
> > so it was removed as well.
>
> jftr, it's used (seemingly incorrect) in ngx_http_redis for gzip decompression
> https://github.com/onnimonni/redis-nginx-module/commit/cbe2630fd070

This commit emulates previously existing processing of the
"Content-Encoding: gzip" header. Just removing the
"u->headers_in.content_encoding = h;" line will suffice.

(Ideally, it should call hh->handler() instead, but this will
require a lot more changes, notably compiling headers hash. Just
in case, in the memcached module similar code simply add r->headers_out
header - which is also wrong, but won't somewhat simpler.)

> It might be better to improve gunzip filter itself as marked in TODO.

No changes in gunzip filter are needed for this. Further, it
doesn't need gunzip at all (assuming it is ok to ignore clients
without gzip support): the code simply provides the
"Content-Encoding: gzip" header in responses.

If you mean the "always gunzip" TODO, it is irrelevant here: in
this case not all responses needs to be gunzipped (even assuming
all responses are gzipped, which is not true, for example, in
memcached, where gzipping is signalled by a flag stored in
memcached).

> >
> > Further, Content-Encoding handling no longer depends on NGX_HTTP_GZIP,
> > as it can be used even without any gzip handling compiled in (for example,
> > in the charset filter).
> >
> > diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
> > --- a/src/http/ngx_http_upstream.c
> > +++ b/src/http/ngx_http_upstream.c
> > @@ -147,11 +147,6 @@ static ngx_int_t ngx_http_upstream_rewri
> > static ngx_int_t ngx_http_upstream_copy_allow_ranges(ngx_http_request_t *r,
> > ngx_table_elt_t *h, ngx_uint_t offset);
> >
> > -#if (NGX_HTTP_GZIP)
> > -static ngx_int_t ngx_http_upstream_copy_content_encoding(ngx_http_request_t *r,
> > - ngx_table_elt_t *h, ngx_uint_t offset);
> > -#endif
> > -
> > static ngx_int_t ngx_http_upstream_add_variables(ngx_conf_t *cf);
> > static ngx_int_t ngx_http_upstream_addr_variable(ngx_http_request_t *r,
> > ngx_http_variable_value_t *v, uintptr_t data);
> > @@ -316,12 +311,10 @@ static ngx_http_upstream_header_t ngx_h
> > ngx_http_upstream_process_transfer_encoding, 0,
> > ngx_http_upstream_ignore_header_line, 0, 0 },
> >
> > -#if (NGX_HTTP_GZIP)
> > { ngx_string("Content-Encoding"),
> > - ngx_http_upstream_process_header_line,
> > - offsetof(ngx_http_upstream_headers_in_t, content_encoding),
> > - ngx_http_upstream_copy_content_encoding, 0, 0 },
> > -#endif
> > + ngx_http_upstream_ignore_header_line, 0,
> > + ngx_http_upstream_copy_header_line,
> > + offsetof(ngx_http_headers_out_t, content_encoding), 0 },
> >
> > { ngx_null_string, NULL, 0, NULL, 0, 0 }
> > };
> > @@ -5349,29 +5342,6 @@ ngx_http_upstream_copy_allow_ranges(ngx_
> > }
> >
> >
> > -#if (NGX_HTTP_GZIP)
> > -
> > -static ngx_int_t
> > -ngx_http_upstream_copy_content_encoding(ngx_http_request_t *r,
> > - ngx_table_elt_t *h, ngx_uint_t offset)
> > -{
> > - ngx_table_elt_t *ho;
> > -
> > - ho = ngx_list_push(&r->headers_out.headers);
> > - if (ho == NULL) {
> > - return NGX_ERROR;
> > - }
> > -
> > - *ho = *h;
> > -
> > - r->headers_out.content_encoding = ho;
> > -
> > - return NGX_OK;
> > -}
> > -
> > -#endif
> > -
> > -
> > static ngx_int_t
> > ngx_http_upstream_add_variables(ngx_conf_t *cf)
> > {
> > diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
> > --- a/src/http/ngx_http_upstream.h
> > +++ b/src/http/ngx_http_upstream.h
> > @@ -285,10 +285,6 @@ typedef struct {
> > ngx_table_elt_t *transfer_encoding;
> > ngx_table_elt_t *vary;
> >
> > -#if (NGX_HTTP_GZIP)
> > - ngx_table_elt_t *content_encoding;
> > -#endif
> > -
> > ngx_table_elt_t *cache_control;
> > ngx_table_elt_t *set_cookie;
> >
> >
>
> _______________________________________________
> nginx-devel mailing list -- nginx-devel@nginx.org
> To unsubscribe send an email to nginx-devel-leave@nginx.org

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[PATCH 00 of 20] multiple headers handling

Maxim Dounin 871 April 20, 2022 06:38PM

[PATCH 03 of 20] SCGI: combining headers with identical names (ticket #1724)

Maxim Dounin 186 April 20, 2022 06:40PM

[PATCH 02 of 20] FastCGI: combining headers with identical names (ticket #1724)

Maxim Dounin 150 April 20, 2022 06:42PM

Re: [PATCH 02 of 20] FastCGI: combining headers with identical names (ticket #1724)

Sergey Kandaurov 191 May 11, 2022 11:36AM

Re: [PATCH 02 of 20] FastCGI: combining headers with identical names (ticket #1724)

Maxim Dounin 105 May 12, 2022 06:34PM

Re: [PATCH 02 of 20] FastCGI: combining headers with identical names (ticket #1724)

Sergey Kandaurov 217 May 13, 2022 10:06AM

Re: [PATCH 02 of 20] FastCGI: combining headers with identical names (ticket #1724)

Sergey Kandaurov 105 May 13, 2022 10:06AM

[PATCH 04 of 20] Uwsgi: combining headers with identical names (ticket #1724)

Maxim Dounin 153 April 20, 2022 06:44PM

[PATCH 08 of 20] Perl: all known input headers are handled identically

Maxim Dounin 229 April 20, 2022 06:44PM

[PATCH 10 of 20] Upstream: style

Maxim Dounin 197 April 20, 2022 06:46PM

[PATCH 07 of 20] All non-unique input headers are now linked lists

Maxim Dounin 275 April 20, 2022 06:48PM

Re: [PATCH 07 of 20] All non-unique input headers are now linked lists

Sergey Kandaurov 249 May 11, 2022 03:44PM

Re: [PATCH 07 of 20] All non-unique input headers are now linked lists

Maxim Dounin 98 May 12, 2022 07:56PM

[PATCH 09 of 20] Perl: combining unknown headers during $r->header_in() lookup

Maxim Dounin 132 April 20, 2022 06:50PM

[PATCH 12 of 20] Upstream: simplified Accept-Ranges handling

Maxim Dounin 300 April 20, 2022 06:52PM

[PATCH 11 of 20] Upstream: simplified Content-Encoding handling

Maxim Dounin 181 April 20, 2022 06:54PM

Re: [PATCH 11 of 20] Upstream: simplified Content-Encoding handling

Sergey Kandaurov 146 May 11, 2022 04:02PM

Re: [PATCH 11 of 20] Upstream: simplified Content-Encoding handling

Maxim Dounin 133 May 12, 2022 08:20PM

[PATCH 05 of 20] Combining unknown headers during variables lookup (ticket #1316)

Maxim Dounin 129 April 20, 2022 06:56PM

Re: [PATCH 05 of 20] Combining unknown headers during variables lookup (ticket #1316)

Sergey Kandaurov 163 May 11, 2022 12:12PM

Re: [PATCH 05 of 20] Combining unknown headers during variables lookup (ticket #1316)

Maxim Dounin 222 May 12, 2022 07:18PM

[PATCH 06 of 20] Reworked multi headers to use linked lists

Maxim Dounin 200 April 20, 2022 06:58PM

Re: [PATCH 06 of 20] Reworked multi headers to use linked lists

Sergey Kandaurov 135 May 11, 2022 03:24PM

Re: [PATCH 06 of 20] Reworked multi headers to use linked lists

Maxim Dounin 130 May 12, 2022 07:44PM

Re: [PATCH 06 of 20] Reworked multi headers to use linked lists

Sergey Kandaurov 281 June 13, 2022 01:08PM

Re: [PATCH 06 of 20] Reworked multi headers to use linked lists

Maxim Dounin 131 June 13, 2022 06:52PM

[PATCH 14 of 20] Upstream: all known headers in u->headers_in are linked lists now

Maxim Dounin 188 April 20, 2022 07:00PM

[PATCH 13 of 20] All known output headers can be linked lists now

Maxim Dounin 125 April 20, 2022 07:02PM

[PATCH 15 of 20] Upstream: header handlers can now return parsing errors

Maxim Dounin 117 April 20, 2022 07:04PM

Re: [PATCH 15 of 20] Upstream: header handlers can now return parsing errors

Sergey Kandaurov 113 May 11, 2022 04:30PM

Re: [PATCH 15 of 20] Upstream: header handlers can now return parsing errors

Maxim Dounin 135 May 12, 2022 08:26PM

[PATCH 17 of 20] Upstream: handling of multiple Vary headers (ticket #1423)

Maxim Dounin 153 April 20, 2022 07:06PM

Re: [PATCH 17 of 20] Upstream: handling of multiple Vary headers (ticket #1423)

Sergey Kandaurov 136 May 11, 2022 04:48PM

Re: [PATCH 17 of 20] Upstream: handling of multiple Vary headers (ticket #1423)

Maxim Dounin 106 May 12, 2022 08:52PM

[PATCH 18 of 20] Upstream: multiple WWW-Authenticate headers (ticket #485)

Maxim Dounin 124 April 20, 2022 07:08PM

Re: [PATCH 18 of 20] Upstream: multiple WWW-Authenticate headers (ticket #485)

Sergey Kandaurov 142 May 11, 2022 05:06PM

Re: [PATCH 18 of 20] Upstream: multiple WWW-Authenticate headers (ticket #485)

Maxim Dounin 108 May 12, 2022 10:00PM

Re: [PATCH 18 of 20] Upstream: multiple WWW-Authenticate headers (ticket #485)

Sergey Kandaurov 112 May 20, 2022 09:56AM

Re: [PATCH 18 of 20] Upstream: multiple WWW-Authenticate headers (ticket #485)

Maxim Dounin 119 May 20, 2022 05:10PM

[PATCH 16 of 20] Upstream: duplicate headers ignored or properly linked

Maxim Dounin 161 April 20, 2022 07:10PM

Re: [PATCH 16 of 20] Upstream: duplicate headers ignored or properly linked

Sergey Kandaurov 108 May 11, 2022 04:36PM

Re: [PATCH 16 of 20] Upstream: duplicate headers ignored or properly linked

Maxim Dounin 446 May 12, 2022 08:36PM

[PATCH 20 of 20] Headers filter: improved memory allocation error handling

Maxim Dounin 148 April 20, 2022 07:12PM

[PATCH 19 of 20] Auth request: multiple WWW-Authenticate headers (ticket #485)

Maxim Dounin 175 April 20, 2022 07:14PM

[PATCH 00 of 10] multiple headers tests

Maxim Dounin 160 April 20, 2022 07:16PM

[PATCH 01 of 10] Tests: tests for passing Date and Server headers

Maxim Dounin 130 April 20, 2022 07:18PM

[PATCH 02 of 10] Tests: fastcgi tests for combining headers

Maxim Dounin 180 April 20, 2022 07:20PM

[PATCH 03 of 10] Tests: scgi tests for combining headers

Maxim Dounin 131 April 20, 2022 07:20PM

[PATCH 04 of 10] Tests: uwsgi tests for combining headers

Maxim Dounin 98 April 20, 2022 07:22PM

[PATCH 07 of 10] Tests: perl $r->header_in() combining headers test

Maxim Dounin 114 April 20, 2022 07:24PM

[PATCH 09 of 10] Tests: tests for multiple Vary headers (ticket #1423)

Maxim Dounin 118 April 20, 2022 07:26PM

[PATCH 06 of 10] Tests: perl $r->header_in("Connection") test

Maxim Dounin 120 April 20, 2022 07:28PM

[PATCH 05 of 10] Tests: tests for various http header variables

Maxim Dounin 173 April 20, 2022 07:30PM

[PATCH 08 of 10] Tests: tests for duplicate response headers

Maxim Dounin 129 April 20, 2022 07:32PM

[PATCH 10 of 10] Tests: tests for multiple WWW-Authenticate headers (ticket #485)

Maxim Dounin 140 April 20, 2022 07:34PM

Re: [PATCH 00 of 10] multiple headers tests

Sergey Kandaurov 154 May 31, 2022 07:14PM

Re: [PATCH 00 of 10] multiple headers tests

Maxim Dounin 101 June 03, 2022 07:26PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 150
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready