aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/url.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/url.c b/lib/url.c
index 684358067..402a49151 100644
--- 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);