rse         98/02/26 02:18:36

  Modified:    src      CHANGES
               src/modules/standard mod_rewrite.c
  Log:
  One more fix for RewriteMap programs. 0 when treated as NULL is ok as an error
  condition for filehandles (FILE *) but not for filenumbers. Here we have to
  use -1 as the error indicator like open() does.
  
  Revision  Changes    Path
  1.668     +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.667
  retrieving revision 1.668
  diff -u -r1.667 -r1.668
  --- CHANGES   1998/02/25 09:36:09     1.667
  +++ CHANGES   1998/02/26 10:18:31     1.668
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b6
   
  +  *) Fix `RewriteMap' program lookup in situations where such maps are
  +     defined but disabled (`RewriteEngine off') in per-server context. 
  +     [Ralf S. Engelschall, PR#1431]
  +
     *) Fix bug introduced in 1.3b4-dev, config with no Port setting would cause
        server to bind to port 0 rather than 80.  [Dean Gaudet]
   
  
  
  
  1.73      +19 -12    apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- mod_rewrite.c     1998/02/26 09:32:27     1.72
  +++ mod_rewrite.c     1998/02/26 10:18:34     1.73
  @@ -488,8 +488,8 @@
           new->datafile  = a2;
           new->checkfile = a2;
       }
  -    new->fpin  = 0;
  -    new->fpout = 0;
  +    new->fpin  = -1;
  +    new->fpout = -1;
   
       if (new->checkfile && (sconf->state == ENGINE_ENABLED)
                          && (stat(new->checkfile, &st) == -1))
  @@ -2661,6 +2661,14 @@
       char c;
       int i;
   
  +    /* when `RewriteEngine off' was used in the per-server
  +     * context then the rewritemap-programs were not spawned.
  +     * In this case using such a map (usually in per-dir context)
  +     * is useless because it is not available.
  +     */
  +    if (fpin == -1 || fpout == -1)
  +        return NULL;
  +
       /* take the lock */
       rewritelock_alloc(r);
   
  @@ -3027,13 +3035,12 @@
       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 the engine isn't turned on, 
  +     *  don't even try to do anything.
        */
  -    if (conf->state == ENGINE_DISABLED) {
  +    if (conf->state == ENGINE_DISABLED)
           return;
  -    }
  -
   
       rewritemaps = conf->rewritemaps;
       entries = (rewritemap_entry *)rewritemaps->elts;
  @@ -3041,13 +3048,13 @@
           map = &entries[i];
           if (map->type != MAPTYPE_PRG)
               continue;
  -        if (map->datafile == NULL    ||
  -            *(map->datafile) == '\0' ||
  -            map->fpin > 0        ||
  -            map->fpout > 0         )
  +        if (map->datafile == NULL 
  +            || *(map->datafile) == '\0'
  +            || map->fpin  != -1
  +            || map->fpout != -1        )
               continue;
           fname = server_root_relative(p, map->datafile);
  -        fpin = NULL;
  +        fpin  = NULL;
           fpout = NULL;
           rc = spawn_child(p, rewritemap_program_child, (void *)map->datafile,
                            kill_after_timeout, &fpin, &fpout);
  
  
  

Reply via email to