[PATCH] ngx_gzip might hang the request for slow downstreams

Maxim Dounin mdounin at mdounin.ru
Thu Oct 31 00:06:07 UTC 2013


Hello!

On Mon, Oct 28, 2013 at 03:37:44PM -0700, Yichun Zhang (agentzh) wrote:

> Hello!
> 
> On Mon, Oct 28, 2013 at 2:02 PM, Maxim Dounin wrote:
> >>
> >> -    if (ctx->nomem) {
> >> +    if (ctx->nomem || in == NULL) {
> >>
> >>          /* flush busy buffers */
> >
> > Is the same problem exists in the gunzip filter, which has very
> > similar code?
> 
> Yes. I've reproduced the request hang in the gunzip filter module as
> well, with the following minimal test case:
> 
>     https://github.com/chaoslawful/lua-nginx-module/commit/594f55b
> 
> >  Is a similar patch needed there?
> >
> 
> Yes. I can confirm that a similar patch fixes the hang on my side.
> 
> > And, BTW, do you care to provide a Mercurial changeset, as
> > suggested by nginx.org/en/docs/contributing_changes.html?  It's
> > not something required, but will make sure your name will be kept
> > in history as a proper person to blame.  :)
> >
> 
> Here we go:
> 
> # HG changeset patch
> # User Yichun Zhang <agentzh at gmail.com>
> # Date 1382997696 25200
> # Branch gzip-flush
> # Node ID 8985d6cc9a4334e954909c130e6204c6fc673d7e
> # Parent  e6a1623f87bc96d5ec62b6d77356aa47dbc60756
> Flush pending data when incoming chain is NULL in gzip and gunzip modules

Committed with minor commit log changes, thanks.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx-devel mailing list