Hi, Piotr:
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
different use-cases.
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
just did
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
content phase,
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.
Thanks
Shuxin
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?
http://mailman.nginx.org/pipermail/nginx-devel/2016-June/008429.html
http://mailman.nginx.org/pipermail/nginx-devel/2016-June/008430.html
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
script.
Does you implementation support trailers in HTTP/2 as well?
Best regards,
Piotr Sikora
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel