From 701509d32237da51bd5b4e6c5bcbd145541259a1 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Thu, 10 Oct 2002 08:00:49 +0000
Subject: [PATCH] Jeff Lawson fixed a few problems with connection re-use that
 remained when you set CURLOPT_PROXY to "".

---
 lib/http.c | 4 ++--
 lib/url.c  | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/http.c b/lib/http.c
index 6bba43dda4..35cae48e81 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -420,7 +420,7 @@ CURLcode Curl_http_connect(struct connectdata *conn)
    * has occured, can we start talking SSL
    */
 
-  if(data->change.proxy && (data->set.proxytype == CURLPROXY_HTTP) &&
+  if(conn->bits.httpproxy &&
      ((conn->protocol & PROT_HTTPS) || data->set.tunnel_thru_httpproxy)) {
 
     /* either HTTPS over proxy, OR explicitly asked for a tunnel */
@@ -551,7 +551,7 @@ CURLcode Curl_http(struct connectdata *conn)
                              host, ppath,
                              (conn->protocol&PROT_HTTPS?TRUE:FALSE));
   }
-  if (data->change.proxy &&
+  if (data->change.proxy && *data->change.proxy &&
       !data->set.tunnel_thru_httpproxy &&
       !(conn->protocol&PROT_HTTPS))  {
     /* The path sent to the proxy is in fact the entire URL */
diff --git a/lib/url.c b/lib/url.c
index 744a0c4fba..c55ebdb197 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -1729,9 +1729,11 @@ static CURLcode CreateConnection(struct SessionHandle *data,
   conn->firstsocket = -1;     /* no file descriptor */
   conn->secondarysocket = -1; /* no file descriptor */
   conn->connectindex = -1;    /* no index */
-  conn->bits.httpproxy = data->change.proxy?TRUE:FALSE; /* proxy-or-not */
+  conn->bits.httpproxy = (data->change.proxy && *data->change.proxy &&
+                          (data->set.proxytype == CURLPROXY_HTTP))?
+    TRUE:FALSE; /* http proxy or not */
   conn->bits.use_range = data->set.set_range?TRUE:FALSE; /* range status */
-  conn->range = data->set.set_range;               /* clone the range setting */
+  conn->range = data->set.set_range;              /* clone the range setting */
   conn->resume_from = data->set.set_resume_from;   /* inherite resume_from */
 
   /* Default protocol-independent behavior doesn't support persistant
-- 
GitLab