You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by st...@apache.org on 2001/08/24 19:01:22 UTC

cvs commit: httpd-2.0/modules/experimental cache_storage.c mod_cache.h mod_mem_cache.c

stoddard    01/08/24 10:01:22

  Modified:    modules/experimental cache_storage.c mod_cache.h
                        mod_mem_cache.c
  Log:
  Eliminate a cache_handle leak. cache_handle is now allocated out of the
  request pool.
  
  Revision  Changes    Path
  1.3       +7 -5      httpd-2.0/modules/experimental/cache_storage.c
  
  Index: cache_storage.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/experimental/cache_storage.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- cache_storage.c	2001/08/23 19:46:55	1.2
  +++ cache_storage.c	2001/08/24 17:01:21	1.3
  @@ -156,7 +156,6 @@
    */
   int cache_select_url(request_rec *r, const char *types, char *url)
   {
  -    cache_handle *h;
       const char *next = types;
       const char *type;
       apr_status_t rv;
  @@ -164,12 +163,13 @@
                                                                             &cache_module);
   
       /* go through the cache types till we get a match */
  +    cache->handle = apr_palloc(r->pool, sizeof(cache_handle));
  +
       while (next) {
           type = ap_cache_tokstr(r->pool, next, &next);
  -        switch ((rv = cache_run_open_entity(&h, type, url))) {
  +        switch ((rv = cache_run_open_entity(cache->handle, type, url))) {
           case OK: {
               /* cool bananas! */
  -            cache->handle = h;
   /*** loop through returned entities */
   /*** do freshness calculation here */
               cache->fresh = 1;
  @@ -182,10 +182,12 @@
           }
           default: {
               /* oo-er! an error */
  +            cache->handle = NULL;
               return rv;
           }
           }
       }
  +    cache->handle = NULL;
       return DECLINED;
   }
   
  @@ -245,8 +247,8 @@
                                         (cache_handle **hp, const char *type, 
                                         char *url, apr_size_t len),(hp,type,url,len),DECLINED)
   APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(cache, CACHE, int, open_entity,  
  -                                      (cache_handle **hp, const char *type, 
  -                                      char *url),(hp,type,url),DECLINED)
  +                                      (cache_handle *h, const char *type, 
  +                                      char *url),(h,type,url),DECLINED)
   APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(cache, CACHE, int, remove_url, 
                                       (const char *type, char *url),(type,url),OK,DECLINED)
   #if 0
  
  
  
  1.7       +1 -1      httpd-2.0/modules/experimental/mod_cache.h
  
  Index: mod_cache.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/experimental/mod_cache.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- mod_cache.h	2001/08/23 19:46:55	1.6
  +++ mod_cache.h	2001/08/24 17:01:21	1.7
  @@ -240,7 +240,7 @@
                             (cache_handle **hp, const char *type,
                              char *url, apr_size_t len))
   APR_DECLARE_EXTERNAL_HOOK(cache, CACHE, int, open_entity,  
  -                          (cache_handle **hp, const char *type,
  +                          (cache_handle *h, const char *type,
                              char *url))
   APR_DECLARE_EXTERNAL_HOOK(cache, CACHE, int, remove_url, 
                             (const char *type, char *url))
  
  
  
  1.4       +2 -11     httpd-2.0/modules/experimental/mod_mem_cache.c
  
  Index: mod_mem_cache.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/experimental/mod_mem_cache.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- mod_mem_cache.c	2001/08/24 16:46:43	1.3
  +++ mod_mem_cache.c	2001/08/24 17:01:21	1.4
  @@ -263,10 +263,9 @@
       return OK;
   }
   
  -static int open_entity(cache_handle **hp, const char *type, char *key) 
  +static int open_entity(cache_handle *h, const char *type, char *key) 
   {
       cache_object_t *obj;
  -    cache_handle *h;
   
       /* Look up entity keyed to 'url' */
       if (strcasecmp(type, "mem")) {
  @@ -284,13 +283,7 @@
           return DECLINED;
       }
   
  -    /* Allocate the cache_handle and initialize it */
  -    h = malloc(sizeof(cache_handle));
  -    *hp = h;
  -    if (!h) {
  -        /* handle the error */
  -        return DECLINED;
  -    }
  +    /* Initialize the cache_handle */
       h->read_body = &read_body;
       h->read_headers = &read_headers;
       h->write_body = &write_body;
  @@ -319,8 +312,6 @@
       /* Reinit the cache_handle fields? */
       h->cache_obj = NULL;
   
  -    /* The caller should free the cache_handle ? */
  -    free(h);
       return OK;
   }