diff options
author | Daniel Stenberg <daniel@haxx.se> | 2008-05-03 21:44:50 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2008-05-03 21:44:50 +0000 |
commit | 21a0f09081e4f64f27de576621ce921505eb43b4 (patch) | |
tree | 3bbfb1c90f01412b4d298a343d718d6ec2272c56 | |
parent | b84b71f5241e18ee3e6bde5bdb9d257c71b56d5f (diff) |
Added comments, check Curl_http_auth_act()'s return code and added a check
that closes the connection somewhat faster when perhapsrewind() has marked
the connection for closure.
-rw-r--r-- | lib/http.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/http.c b/lib/http.c index f8ef9a4ea..266c1cacb 100644 --- a/lib/http.c +++ b/lib/http.c @@ -340,9 +340,13 @@ static CURLcode perhapsrewind(struct connectdata *conn) */ conn->bits.close = TRUE; data->req.size = 0; /* don't download any more than 0 bytes */ + + /* There still is data left to send, but this connection is marked for + closure so we can safely do the rewind right now */ } if(bytessent) + /* we rewind now at once since if we already sent something */ return Curl_readrewind(conn); return CURLE_OK; @@ -1606,10 +1610,20 @@ CURLcode Curl_proxyCONNECT(struct connectdata *conn, if(error) return CURLE_RECV_ERROR; - if(data->info.httpproxycode != 200) + if(data->info.httpproxycode != 200) { /* Deal with the possibly already received authenticate headers. 'newurl' is set to a new URL if we must loop. */ - Curl_http_auth_act(conn); + result = Curl_http_auth_act(conn); + if(result) + return result; + + if(conn->bits.close) + /* the connection has been marked for closure, most likely in the + Curl_http_auth_act() function and thus we can kill it at once + below + */ + closeConnection = TRUE; + } if(closeConnection && data->req.newurl) { /* Connection closed by server. Don't use it anymore */ |