From fd5e69f7697c1230b618693ffa697e409a202271 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 9 May 2009 21:34:48 +0000 Subject: [PATCH] ConnectPlease() fixed for the new proxy connect functionality to make sure '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 | 18 +++++++++++------- 1 file 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);