]> granicus.if.org Git - curl/commitdiff
move the ssl config clone call to before the connectionexists call and then
authorDaniel Stenberg <daniel@haxx.se>
Mon, 31 Mar 2003 21:43:05 +0000 (21:43 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 31 Mar 2003 21:43:05 +0000 (21:43 +0000)
also subsequently free the ssl struct if the connection struct is to be
deleted

lib/url.c

index a401f24cc592ab96ebf982192e9bb4169bd786b7..9d87dd73168f1633f6779fd8439deb4080dde1fd 100644 (file)
--- 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