diff options
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/common-utils.c | 30 | ||||
| -rw-r--r-- | libglusterfs/src/glusterfs/common-utils.h | 2 | ||||
| -rw-r--r-- | libglusterfs/src/libglusterfs.sym | 1 | 
3 files changed, 25 insertions, 8 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 8e2ffa3accd..b65623fbb75 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -576,8 +576,14 @@ struct dnscache *  gf_dnscache_init(time_t ttl)  {      struct dnscache *cache = GF_MALLOC(sizeof(*cache), gf_common_mt_dnscache); -    if (cache) { -        cache->cache_dict = NULL; +    if (!cache) +        return NULL; + +    cache->cache_dict = dict_new(); +    if (!cache->cache_dict) { +        GF_FREE(cache); +        cache = NULL; +    } else {          cache->ttl = ttl;      } @@ -585,6 +591,20 @@ gf_dnscache_init(time_t ttl)  }  /** + * gf_dnscache_deinit -- cleanup resources used by struct dnscache + */ +void +gf_dnscache_deinit(struct dnscache *cache) +{ +    if (!cache) { +        gf_msg_plain(GF_LOG_WARNING, "dnscache is NULL"); +        return; +    } +    dict_unref(cache->cache_dict); +    GF_FREE(cache); +} + +/**   * gf_dnscache_entry_init -- Initialize a dnscache entry   *   * @return: SUCCESS: Pointer to an allocated dnscache entry struct @@ -632,12 +652,6 @@ gf_rev_dns_lookup_cached(const char *ip, struct dnscache *dnscache)      if (!dnscache)          goto out; -    if (!dnscache->cache_dict) { -        dnscache->cache_dict = dict_new(); -        if (!dnscache->cache_dict) { -            goto out; -        } -    }      cache = dnscache->cache_dict;      /* Quick cache lookup to see if we already hold it */ diff --git a/libglusterfs/src/glusterfs/common-utils.h b/libglusterfs/src/glusterfs/common-utils.h index e6f565cb783..e2cc3d36670 100644 --- a/libglusterfs/src/glusterfs/common-utils.h +++ b/libglusterfs/src/glusterfs/common-utils.h @@ -238,6 +238,8 @@ list_node_del(struct list_node *node);  struct dnscache *  gf_dnscache_init(time_t ttl); +void +gf_dnscache_deinit(struct dnscache *cache);  struct dnscache_entry *  gf_dnscache_entry_init(void);  void diff --git a/libglusterfs/src/libglusterfs.sym b/libglusterfs/src/libglusterfs.sym index 26a11e36410..6247785964b 100644 --- a/libglusterfs/src/libglusterfs.sym +++ b/libglusterfs/src/libglusterfs.sym @@ -587,6 +587,7 @@ gf_dirent_free  gf_dirent_orig_offset  gf_dm_hashfn  gf_dnscache_init +gf_dnscache_deinit  gf_errno_to_error  gf_error_to_errno  _gf_event  | 
