Gzip Gunzip: always flush busy bufs when the incoming chain is NULL.

Yichun Zhang (agentzh) agentzh at gmail.com
Thu Nov 6 01:02:46 UTC 2014


Hello!

On Wed, Nov 5, 2014 at 7:41 AM, Maxim Dounin wrote:
> The questions are:
>
> - How it happened that all content handler's buffers are busy,
>   while there are no busy buffers in gzip?
>

Sorry, I was wrong in this part. The content handler actually checked
the r->buffered flag instead of checking its own busy bufs. The
content handler has no busy bufs at this point.

> - How it happened that there are no busy buffers in gzip, but
>   there are buffers in r->out?
>

I've checked that the bufs in r->out is from ngx_chunked_filter.

> - Why calling next filter in gzip with NULL is expected to help
>   here?  It only can free up some gzip filter buffers which are
>   all already free, but not content handler module buffers.
>

It just helps flushing out the bufs generated by the
ngx_chunked_filter module. The chunked overhead bufs stalled in r->out
can usually be ignored because they're usually very small in practice.

You're right the content handler should checks its own busy bufs
instead of checking r->buffered.

Thank you for your explanation and patience!

Best regards,
-agentzh



More information about the nginx-devel mailing list