aboutsummaryrefslogtreecommitdiff
path: root/lib/url.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2003-03-31 21:43:05 +0000
committerDaniel Stenberg <daniel@haxx.se>2003-03-31 21:43:05 +0000
commitdf00ec3c8200bfc34ab21490f962e84bcc40a736 (patch)
tree42ea2a2f1f95d254ab67f69fd846c581975fd001 /lib/url.c
parentad6fca28f903423f3593e36a6737b90527abd9ce (diff)
move the ssl config clone call to before the connectionexists call and then
also subsequently free the ssl struct if the connection struct is to be deleted
Diffstat (limited to 'lib/url.c')
-rw-r--r--lib/url.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/url.c b/lib/url.c
index a401f24cc..9d87dd731 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2629,6 +2629,11 @@ static CURLcode CreateConnection(struct SessionHandle *data,
* new one.
*************************************************************/
+ /* get a cloned copy of the SSL config situation stored in the
+ connection struct */
+ if(!Curl_clone_ssl_config(&data->set.ssl, &conn->ssl_config))
+ return CURLE_OUT_OF_MEMORY;
+
/* reuse_fresh is set TRUE if we are told to use a fresh connection
by force */
if(!data->set.reuse_fresh &&
@@ -2645,6 +2650,10 @@ static CURLcode CreateConnection(struct SessionHandle *data,
if(old_conn->proxyhost)
free(old_conn->proxyhost);
+ /* free the SSL config struct from this connection struct as this was
+ allocated in vain and is targeted for destruction */
+ Curl_free_ssl_config(&conn->ssl_config);
+
conn = conn_temp; /* use this connection from now on */
/* get the user+password information from the old_conn struct since it may
@@ -2709,9 +2718,6 @@ static CURLcode CreateConnection(struct SessionHandle *data,
ConnectionStore(data, conn);
}
- if(!Curl_clone_ssl_config(&data->set.ssl, &conn->ssl_config))
- return CURLE_OUT_OF_MEMORY;
-
/* Continue connectdata initialization here.
*
* Inherit the proper values from the urldata struct AFTER we have arranged