Question about ngx_chain_writer

Maxim Dounin mdounin at mdounin.ru
Thu Jun 6 18:09:39 UTC 2019


Hello!

On Thu, Jun 06, 2019 at 01:06:38PM +0000, Eran Kornblau wrote:

> Hi all,
> 
> Looking at ngx_chain_writer, there's something that looks a bit off to me, this line seems redundant -
> https://github.com/nginx/nginx/blob/master/src/core/ngx_output_chain.c#L728
> 
> The first loop in the function adds the input chain (in) to the end of ctx->out.
> The second loop in the function calculates the total size of ctx->out, so it will add the size of the 'in' buffers again.
> I verified in gdb that size is indeed x2 the size of the chain.
> 
> This isn't causing any problem since size is only compared to zero, but seems a bit confusing...
> It may have been better to leave the 'size += ngx_buf_size(in->buf);' but reverse the order of the 2 loops,
> so that the input buffers will be validated only once.
> 
> Does this make sense or did I get something wrong?

Yes, ngx_chain_writer() function was written to work with very few 
buffers, and isn't optimal.  A better though similar code can be 
seen in ngx_http_write_filter().

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx-devel mailing list