[PATCH 1 of 2] HTTP: add support for trailers in HTTP responses
shuxinyang.oss at gmail.com
Mon Jun 27 22:03:22 UTC 2016
I took some time to read your code, I believe I fully understand
your code at this moment.
My implementation is slightly differently from yours, and we have
Here is my $0.02 value of comment to your code (cosmetic wise):
- the verb "support" in "trailer support" in too general. The
trailer-support in my mind include
a long list of features (see bellow)
- the "get" in "ngx_http_chunked_get_trailers" is sort of
misleading. The "get" here actually
means "generate". I thought you are looking for a existing buffer.
Now go back to the long list of trailer support, I believe it needs
to cover at least:
1) generate trailer headers and sent to downstream/visitor as you
2) reverse proxy propagate trailer headers from upstream, which needs
2.0 parse the incoming trailer header, both considering the
body is buffered and not buffered,
2.1. make the incoming trailer accessible via variable after
2.2. if response body is is not buffered, combine incoming
trailer header with the generated headers.
2.3. convert incoming trailer to regular header if response
body is buffered
3|4|..|n) other features.
I think 2.x is much harder than 1). I only implement 1) and 2.0) and
2.1). While implement 2.1), I left some
room for 2.2 and 2.3 for the future. Now that you have plan for 2.x as
your email suggests, wouldn't it
be nice to submit these code first, and then go ahead with the code of
1). I believe to support 2.2 or 2.3,
your existing code in chunk module needs lots of change.
On 06/27/2016 12:14 PM, Piotr Sikora wrote:
> Hey Shuxin,
>> As far as I can understand, your change is just to add trailer headers
>> (not including the part that paring incoming
>> trailer header from upstream, or merge the incoming trailer and generated
>> trailer). If that is correct, you just need
>> to add "trailer: hdr1,hdr2... hdrn" to the out-headers.
> Did you look at both patches I've sent?
> Because they cover much more than just adding "Trailer" header.
>> TE is for something
>> else as Maxim pointed out,
>> and adding this header can be done in chunked-filter-module as well.
> "TE" is a _request_ header, so I don't see how adding it to response
> is relevant here.
> And yes, "TE" header could be parsed in chunked filter, but it's IMHO
> wrong place to do it, since you need to parse this header in HTTP/2
> requests as well.
>> My previous implementation of generating trailer header is completely done
>> in chunk-module. Later on, I change
>> my mind, and add a standalone module along with minor change to configure
> Does you implementation support trailers in HTTP/2 as well?
> Best regards,
> Piotr Sikora
> nginx-devel mailing list
> nginx-devel at nginx.org
More information about the nginx-devel