Question about ngx_chain_writer

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


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 -
> 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

More information about the nginx-devel mailing list