diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/conncache.c | 15 | ||||
| -rw-r--r-- | lib/conncache.h | 4 | ||||
| -rw-r--r-- | lib/url.c | 8 | 
3 files changed, 12 insertions, 15 deletions
| diff --git a/lib/conncache.c b/lib/conncache.c index 066542915..76428eb86 100644 --- a/lib/conncache.c +++ b/lib/conncache.c @@ -96,14 +96,13 @@ static void bundle_destroy(struct connectbundle *cb_ptr)  }  /* Add a connection to a bundle */ -static CURLcode bundle_add_conn(struct connectbundle *cb_ptr, -                                struct connectdata *conn) +static void bundle_add_conn(struct connectbundle *cb_ptr, +                            struct connectdata *conn)  {    Curl_llist_insert_next(&cb_ptr->conn_list, cb_ptr->conn_list.tail, conn,                           &conn->bundle_node);    conn->bundle = cb_ptr;    cb_ptr->num_connections++; -  return CURLE_OK;  }  /* Remove a connection from a bundle */ @@ -263,7 +262,7 @@ static void conncache_remove_bundle(struct conncache *connc,  CURLcode Curl_conncache_add_conn(struct conncache *connc,                                   struct connectdata *conn)  { -  CURLcode result; +  CURLcode result = CURLE_OK;    struct connectbundle *bundle;    struct connectbundle *new_bundle = NULL;    struct Curl_easy *data = conn->data; @@ -290,13 +289,7 @@ CURLcode Curl_conncache_add_conn(struct conncache *connc,      bundle = new_bundle;    } -  result = bundle_add_conn(bundle, conn); -  if(result) { -    if(new_bundle) -      conncache_remove_bundle(data->state.conn_cache, new_bundle); -    goto unlock; -  } - +  bundle_add_conn(bundle, conn);    conn->connection_id = connc->next_connection_id++;    connc->num_conn++; diff --git a/lib/conncache.h b/lib/conncache.h index d8ad80f96..eedd7a800 100644 --- a/lib/conncache.h +++ b/lib/conncache.h @@ -7,7 +7,7 @@   *                            | (__| |_| |  _ <| |___   *                             \___|\___/|_| \_\_____|   * - * Copyright (C) 2015 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 2015 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.   * Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>   *   * This software is licensed as described in the file COPYING, which @@ -63,7 +63,7 @@ size_t Curl_conncache_bundle_size(struct connectdata *conn);  bool Curl_conncache_return_conn(struct connectdata *conn);  CURLcode Curl_conncache_add_conn(struct conncache *connc, -                                 struct connectdata *conn); +                                 struct connectdata *conn) WARN_UNUSED_RESULT;  void Curl_conncache_remove_conn(struct connectdata *conn,                                  bool lock);  bool Curl_conncache_foreach(struct Curl_easy *data, @@ -4308,7 +4308,9 @@ static CURLcode create_conn(struct Curl_easy *data,        conn->data = data;        conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */ -      Curl_conncache_add_conn(data->state.conn_cache, conn); +      result = Curl_conncache_add_conn(data->state.conn_cache, conn); +      if(result) +        goto out;        /*         * Setup whatever necessary for a resumed transfer @@ -4531,7 +4533,9 @@ static CURLcode create_conn(struct Curl_easy *data,         * This is a brand new connection, so let's store it in the connection         * cache of ours!         */ -      Curl_conncache_add_conn(data->state.conn_cache, conn); +      result = Curl_conncache_add_conn(data->state.conn_cache, conn); +      if(result) +        goto out;      }  #if defined(USE_NTLM) | 
