Somewhat crude attempt at fixing the test 91 failures. I commit this now

so that the automatic testing hosts will test these changes over the weekend.
This commit is contained in:
Daniel Stenberg
2004-01-30 12:08:18 +00:00
parent 154c9bc3b8
commit df750c236c
4 changed files with 33 additions and 6 deletions

View File

@@ -1896,12 +1896,26 @@ CURLcode Curl_perform(struct SessionHandle *data)
if(res == CURLE_OK) {
res = Transfer(conn); /* now fetch that URL please */
if(res == CURLE_OK)
/*
* We must duplicate the new URL here as the connection data
* may be free()ed in the Curl_done() function.
*/
newurl = conn->newurl?strdup(conn->newurl):NULL;
if(res == CURLE_OK) {
if((conn->keep.bytecount == 0) &&
(conn->sockerror == ECONNRESET) &&
conn->bits.reuse) {
/* We got no data, the connection was reset and we did attempt
to re-use a connection. This smells like we were too fast to
re-use a connection that was closed when we wanted to read
from it. Bad luck. Let's simulate a redirect to the same URL
to retry! */
infof(data, "Connection reset, retrying a fresh connect\n");
newurl = strdup(conn->data->change.url);
}
else
/*
* We must duplicate the new URL here as the connection data
* may be free()ed in the Curl_done() function.
*/
newurl = conn->newurl?strdup(conn->newurl):NULL;
}
else {
/* The transfer phase returned error, we mark the connection to get
* closed to prevent being re-used. This is becasue we can't