diff options
Diffstat (limited to 'lib/conncache.c')
| -rw-r--r-- | lib/conncache.c | 38 | 
1 files changed, 11 insertions, 27 deletions
diff --git a/lib/conncache.c b/lib/conncache.c index f3d1d6cfd..6d91d0491 100644 --- a/lib/conncache.c +++ b/lib/conncache.c @@ -45,32 +45,16 @@ static void free_bundle_hash_entry(void *freethis)    Curl_bundle_destroy(b);  } -struct conncache *Curl_conncache_init(int size) +int Curl_conncache_init(struct conncache *connc, int size)  { -  struct conncache *connc; - -  connc = calloc(1, sizeof(struct conncache)); -  if(!connc) -    return NULL; - -  connc->hash = Curl_hash_alloc(size, Curl_hash_str, -                                Curl_str_key_compare, free_bundle_hash_entry); - -  if(!connc->hash) { -    free(connc); -    return NULL; -  } - -  return connc; +  return Curl_hash_init(&connc->hash, size, Curl_hash_str, +                        Curl_str_key_compare, free_bundle_hash_entry);  }  void Curl_conncache_destroy(struct conncache *connc)  { -  if(connc) { -    Curl_hash_destroy(connc->hash); -    connc->hash = NULL; -    free(connc); -  } +  if(connc) +    Curl_hash_clean(&connc->hash);  }  struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn, @@ -81,7 +65,7 @@ struct connectbundle *Curl_conncache_find_bundle(struct connectdata *conn,    char *hostname = conn->bits.proxy?conn->proxy.name:conn->host.name;    if(connc) -    bundle = Curl_hash_pick(connc->hash, hostname, strlen(hostname)+1); +    bundle = Curl_hash_pick(&connc->hash, hostname, strlen(hostname)+1);    return bundle;  } @@ -92,7 +76,7 @@ static bool conncache_add_bundle(struct conncache *connc,  {    void *p; -  p = Curl_hash_add(connc->hash, hostname, strlen(hostname)+1, bundle); +  p = Curl_hash_add(&connc->hash, hostname, strlen(hostname)+1, bundle);    return p?TRUE:FALSE;  } @@ -106,14 +90,14 @@ static void conncache_remove_bundle(struct conncache *connc,    if(!connc)      return; -  Curl_hash_start_iterate(connc->hash, &iter); +  Curl_hash_start_iterate(&connc->hash, &iter);    he = Curl_hash_next_element(&iter);    while(he) {      if(he->ptr == bundle) {        /* The bundle is destroyed by the hash destructor function,           free_bundle_hash_entry() */ -      Curl_hash_delete(connc->hash, he->key, he->key_len); +      Curl_hash_delete(&connc->hash, he->key, he->key_len);        return;      } @@ -201,7 +185,7 @@ void Curl_conncache_foreach(struct conncache *connc,    if(!connc)      return; -  Curl_hash_start_iterate(connc->hash, &iter); +  Curl_hash_start_iterate(&connc->hash, &iter);    he = Curl_hash_next_element(&iter);    while(he) { @@ -232,7 +216,7 @@ Curl_conncache_find_first_connection(struct conncache *connc)    struct curl_hash_element *he;    struct connectbundle *bundle; -  Curl_hash_start_iterate(connc->hash, &iter); +  Curl_hash_start_iterate(&connc->hash, &iter);    he = Curl_hash_next_element(&iter);    while(he) {  | 
