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
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!
More information about the nginx-devel