Merge branch 'master' of github.com:bagder/curl

This commit is contained in:
Bill Hoffman 2010-03-24 14:19:50 -04:00
commit 481c61d060
5 changed files with 29 additions and 21 deletions

11
CHANGES
View File

@ -7,6 +7,17 @@
Changelog
Daniel Stenberg (24 Mar 2010)
- Bob Richmond: There's an annoying situation where libcurl will read new HTTP
response data from a socket, then check if it's a timeout if one is set. If
the last packet received constitutes the end of the response body, libcurl
still treats it as a timeout condition and reports a message like:
"Operation timed out after 3000 milliseconds with 876 out of 876 bytes
received"
It should only a timeout if the timer lapsed and we DIDN'T receive the end
of the response body yet.
- Christopher Conroy fixed a problem with RTSP and GET_PARAMETER reported
to us by Massimo Callegari. There's a new test case 572 that verifies this
now.

View File

@ -40,6 +40,7 @@ This release includes the following bugfixes:
o chunked-encoding with Content-Length: header problem
o multi interface HTTP POST over a proxy using PROXYTUNNEL
o RTSP GET_PARAMETER
o timeout after last data chunk was handled
This release includes the following known bugs:
@ -52,6 +53,7 @@ advice from friends like these:
Daniel Fandrich, Patrick Monnerat, Pat Ray, Wesley Miaw, Ben Greear,
Ryan Chan, Markus Duft, Andrei Benea, Jacob Moshenko, Daniel Johnson,
Constantine Sapuntzakis, Douglas Steinwand, Thomas Lopatic, Hauke Duden,
Akos Pasztory, Kenny To, Christopher Conroy, Massimo Callegari
Akos Pasztory, Kenny To, Christopher Conroy, Massimo Callegari,
Bob Richmond
Thanks! (and sorry if I forgot to mention someone)

View File

@ -624,9 +624,9 @@ int Curl_resolv_timeout(struct connectdata *conn,
*/
rc = Curl_resolv(conn, hostname, port, entry);
#ifdef USE_ALARM_TIMEOUT
clean_up:
#ifdef USE_ALARM_TIMEOUT
if (timeout > 0) {
#ifdef HAVE_SIGACTION

View File

@ -1060,21 +1060,22 @@ CURLcode Curl_readwrite(struct connectdata *conn,
if(result)
return result;
if(data->set.timeout &&
(Curl_tvdiff(k->now, k->start) >= data->set.timeout)) {
if(k->size != -1) {
failf(data, "Operation timed out after %ld milliseconds with %"
FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
Curl_tvdiff(k->now, k->start), k->bytecount, k->size);
} else {
failf(data, "Operation timed out after %ld milliseconds with %"
FORMAT_OFF_T " bytes received",
Curl_tvdiff(k->now, k->start), k->bytecount);
if(k->keepon) {
if(data->set.timeout &&
(Curl_tvdiff(k->now, k->start) >= data->set.timeout)) {
if(k->size != -1) {
failf(data, "Operation timed out after %ld milliseconds with %"
FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
Curl_tvdiff(k->now, k->start), k->bytecount, k->size);
} else {
failf(data, "Operation timed out after %ld milliseconds with %"
FORMAT_OFF_T " bytes received",
Curl_tvdiff(k->now, k->start), k->bytecount);
}
return CURLE_OPERATION_TIMEDOUT;
}
return CURLE_OPERATION_TIMEDOUT;
}
if(!k->keepon) {
else {
/*
* The transfer has been performed. Just make some general checks before
* returning.

View File

@ -69,9 +69,7 @@ int test(char *URL)
test_setopt(curl, CURLOPT_RTSP_TRANSPORT, "Planes/Trains/Automobiles");
test_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_SETUP);
fprintf(stderr, "CPC: %s:%d\n", __FILE__, __LINE__);
res = curl_easy_perform(curl);
fprintf(stderr, "CPC: %s:%d\n", __FILE__, __LINE__);
if(res)
goto test_cleanup;
@ -82,7 +80,6 @@ int test(char *URL)
test_setopt(curl, CURLOPT_RTSP_STREAM_URI, stream_uri);
free(stream_uri);
stream_uri = NULL;
fprintf(stderr, "CPC: %s:%d\n", __FILE__, __LINE__);
/* PUT style GET_PARAMETERS */
params = open("log/file572.txt", O_RDONLY);
@ -101,7 +98,6 @@ int test(char *URL)
test_setopt(curl, CURLOPT_UPLOAD, 1L);
test_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t) file_info.st_size);
fprintf(stderr, "CPC: %s:%d\n", __FILE__, __LINE__);
res = curl_easy_perform(curl);
if(res)
goto test_cleanup;
@ -109,7 +105,6 @@ int test(char *URL)
test_setopt(curl, CURLOPT_UPLOAD, 0L);
fclose(paramsf);
paramsf = NULL;
fprintf(stderr, "CPC: %s:%d\n", __FILE__, __LINE__);
/* Heartbeat GET_PARAMETERS */
if((stream_uri = suburl(URL, request++)) == NULL) {
@ -120,7 +115,6 @@ int test(char *URL)
free(stream_uri);
stream_uri = NULL;
fprintf(stderr, "CPC: %s:%d\n", __FILE__, __LINE__);
res = curl_easy_perform(curl);
if(res)
goto test_cleanup;