chuck       97/04/04 22:08:24

  Modified:    src/modules/proxy  proxy_cache.c
  Log:
  Reviewed by:  Chuck Murcko
  Submitted by: Brian Moore <[EMAIL PROTECTED]>
  Fix loopholes in cache expiry vis a vis alarms. This will be followed by
  Roy's comprehensive timeout patch.
  
  Revision  Changes    Path
  1.11      +10 -1     apache/src/modules/proxy/proxy_cache.c
  
  Index: proxy_cache.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/modules/proxy/proxy_cache.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -C3 -r1.10 -r1.11
  *** proxy_cache.c     1997/03/20 18:40:15     1.10
  --- proxy_cache.c     1997/04/05 06:08:23     1.11
  ***************
  *** 119,124 ****
  --- 119,125 ----
        if (errno != ENOENT)
        {
            proxy_log_uerror("stat", filename, NULL, r->server);
  +         unblock_alarms();
            return;
        }
        if (creat(filename, 0666) == -1)
  ***************
  *** 127,138 ****
                proxy_log_uerror("creat", filename, NULL, r->server);
            else
                lastcheck = abs(now);  /* someone else got in there */
            return;
        }
        } else
        {
        lastcheck = buf.st_mtime;  /* save the time */
  !     if (now < lastcheck + every) return;
        if (utime(filename, NULL) == -1)
            proxy_log_uerror("utimes", filename, NULL, r->server);
        }
  --- 128,144 ----
                proxy_log_uerror("creat", filename, NULL, r->server);
            else
                lastcheck = abs(now);  /* someone else got in there */
  +         unblock_alarms();
            return;
        }
        } else
        {
        lastcheck = buf.st_mtime;  /* save the time */
  !     if (now < lastcheck + every)
  !     {
  !         unblock_alarms();
  !         return;
  !     }
        if (utime(filename, NULL) == -1)
            proxy_log_uerror("utimes", filename, NULL, r->server);
        }
  ***************
  *** 143,149 ****
  --- 149,158 ----
        sub_garbage_coll(r,files,cachedir,"/");
    
        if (curblocks < cachesize || curblocks + curbytes <= cachesize)
  +     {
  +     unblock_alarms();
        return;
  +     }
    
        qsort(files->elts, files->nelts, sizeof(struct gc_ent *), gcdiff);
    
  
  
  

Reply via email to