]> granicus.if.org Git - curl/commitdiff
ConnectPlease() fixed for the new proxy connect functionality to make sure
authorDaniel Stenberg <daniel@haxx.se>
Sat, 9 May 2009 21:34:48 +0000 (21:34 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 9 May 2009 21:34:48 +0000 (21:34 +0000)
'connected' truly is false when the socks connect fails.

Curl_done() fixed for the check-conn->bits.done-before-Curl_getoff_all_pipelines case

lib/url.c

index 6843580678d19b50fc794334cd5280dbbfd7d371..402a49151cfaa721a2c649e3ad22b3c2acd10b38 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -2886,7 +2886,8 @@ static CURLcode ConnectPlease(struct SessionHandle *data,
     if(*connected)
       result = Curl_connected_proxy(conn);
   }
-  else
+
+  if(result)
     *connected = FALSE; /* mark it as not connected */
 
   return result;
@@ -4777,18 +4778,21 @@ CURLcode Curl_done(struct connectdata **connp,
 
   Curl_expire(data, 0); /* stop timer */
 
-  if(conn->bits.done ||
-     (conn->send_pipe->size + conn->recv_pipe->size != 0 &&
+  if(conn->bits.done)
+    /* Stop if Curl_done() has already been called */
+    return CURLE_OK;
+
+  Curl_getoff_all_pipelines(data, conn);
+
+  if((conn->send_pipe->size + conn->recv_pipe->size != 0 &&
       !data->set.reuse_forbid &&
       !conn->bits.close))
-    /* Stop if Curl_done() has already been called or pipeline
-       is not empty and we do not have to close connection. */
+    /* Stop if pipeline is not empty and we do not have to close
+       connection. */
     return CURLE_OK;
 
   conn->bits.done = TRUE; /* called just now! */
 
-  Curl_getoff_all_pipelines(data, conn);
-
   /* Cleanup possible redirect junk */
   if(data->req.newurl) {
     free(data->req.newurl);