Bug report: missing SCARCE string innginx-1.1.15/src/http/ngx_http_file_cache.c [patch]

Max nginxyz at mail.ru
Fri Feb 17 08:43:39 UTC 2012


16 февраля 2012, 14:08 от Maxim Dounin <mdounin at mdounin.ru>:
> On Thu, Feb 16, 2012 at 01:08:58PM +0400, Max wrote:
> > the value of the NGX_HTTP_CACHE_SCARCE cache status is defined in
> > nginx-1.1.15/src/http/ngx_http_cache.h, but unlike the other cache
> > status strings, it's missing from
> nginx-1.1.15/src/http/ngx_http_file_cache.c. 
> > 
> > The function ngx_http_upstream_cache_status() in
> > nginx-1.1.15/src/http/ngx_http_upstream.c references the status
> > strings directly as ngx_http_cache_status[n].len, so with the
> > SCARCE cache status string missing, this is a segmentation violation
> > waiting to happen.
> > 
> > Here's the patch to fix the problem:
> > 
> > <patch>
> > --- src/http/ngx_http_file_cache.c.orig  2012-02-16 00:18:21.000000000 -0800
> > +++ src/http/ngx_http_file_cache.c       2012-02-16 00:25:00.000000000 -0800
> > @@ -53,7 +53,8 @@
> >      ngx_string("EXPIRED"),
> >      ngx_string("STALE"),
> >      ngx_string("UPDATING"),
> > -    ngx_string("HIT")
> > +    ngx_string("HIT"),
> > +    ngx_string("SCARCE")
> >  };
> > ---</patch>
> 
> The NGX_HTTP_CACHE_SCARCE value can't appear in u->cache_status, 
> and hence there is no real problem.  It's a special value used by 
> cache to inform upstream that there is no cached response (i.e. 
> MISS cache status) and cacheing should be enabled due to min_uses 
> preventing it.

You mean DISABLED due to file cache node exists being 0 or min_uses
being set too high?

nginx-1.1.15/src/http/ngx_http_upstream.c:

652 ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u)
653 {
...
719     rc = ngx_http_file_cache_open(r);
...
742     switch (rc) {
...
774     case NGX_HTTP_CACHE_SCARCE:
775
776         u->cacheable = 0;
777
778         break;
...
795     }
800 }

Max


More information about the nginx mailing list