You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Randy Terbush <ra...@zyzzyva.com> on 1997/09/08 04:22:37 UTC

Re: [PATCH] to mod_rewrite to close PR#991 (take 2)

log_printf() is deprecated. 



>     Okey, this slightly revised version includes a check for the
>     condition Ralf suggested (though I armoured the routine called, not
>     the call itself).
> 
>     For 1.3b1.. 'cuz it fixes a bug :->
> 
>     #ken    P-)}
> 
> Index: mod_rewrite.c
> ===================================================================
> RCS file: /export/home/cvs/apachen/src/modules/standard/mod_rewrite.c,v
> retrieving revision 1.50
> diff -u -r1.50 mod_rewrite.c
> --- mod_rewrite.c	1997/09/01 02:39:03	1.50
> +++ mod_rewrite.c	1997/09/08 02:09:02
> @@ -455,9 +455,9 @@
>      new->fpin  = 0;
>      new->fpout = 0;
>  
> -    if (new->checkfile)
> -        if (stat(new->checkfile, &st) == -1)
> -            return pstrcat(cmd->pool, "RewriteMap: map file or program not found:", new->checkfile, NULL);
> +    if (new->checkfile && (sconf->state == ENGINE_ENABLED)
> +        && (stat(new->checkfile, &st) == -1))
> +	return pstrcat(cmd->pool, "RewriteMap: map file or program not found:", new->checkfile, NULL);
>  
>      return NULL;
>  }
> @@ -2192,7 +2192,14 @@
>          s = &entries[i];
>          if (strcmp(s->name, name) == 0) {
>              if (s->type == MAPTYPE_TXT) {
> -                stat(s->checkfile, &st); /* existence was checked at startup! */
> +                if (stat(s->checkfile, &st) == -1) {
> +		    log_printf(r->server,
> +			       "mod_rewrite: can't access text RewriteMap file %s: %s",
> +			       s->checkfile, strerror(errno));
> +		    rewritelog(r, 1,
> +			       "can't open RewriteMap file, see error log");
> +		    return NULL;
> +		}
>                  value = get_cache_string(cachep, s->name, CACHEMODE_TS, st.st_mtime, key);
>                  if (value == NULL) {
>                      rewritelog(r, 6, "cache lookup FAILED, forcing new map lookup");
> @@ -2213,7 +2220,14 @@
>              }
>              else if (s->type == MAPTYPE_DBM) {
>  #if HAS_NDBM_LIB
> -                stat(s->checkfile, &st); /* existence was checked at startup! */
> +                if (stat(s->checkfile, &st) == -1) {
> +		    log_printf(r->server,
> +			       "mod_rewrite: can't access dbm RewriteMap file %s: %s",
> +			       s->checkfile, strerror(errno));
> +		    rewritelog(r, 1,
> +			       "can't open RewriteMap file, see error log");
> +		    return NULL;
> +		}
>                  value = get_cache_string(cachep, s->name, CACHEMODE_TS, st.st_mtime, key);
>                  if (value == NULL) {
>                      rewritelog(r, 6, "cache lookup FAILED, forcing new map lookup");
> @@ -2535,6 +2549,13 @@
>      int rc;
>    
>      conf = get_module_config(s->module_config, &rewrite_module);
> +    /*
> +     * If the engine isn't turned on, don't even try to do anything.
> +     */
> +    if (conf->state == ENGINE_DISABLED) {
> +	return;
> +    }
> +    
>  
>      rewritemaps = conf->rewritemaps;
>      entries = (rewritemap_entry *)rewritemaps->elts;