aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2008-05-03 21:44:50 +0000
committerDaniel Stenberg <daniel@haxx.se>2008-05-03 21:44:50 +0000
commit21a0f09081e4f64f27de576621ce921505eb43b4 (patch)
tree3bbfb1c90f01412b4d298a343d718d6ec2272c56
parentb84b71f5241e18ee3e6bde5bdb9d257c71b56d5f (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.c18
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 */