mirror of
https://github.com/curl/curl.git
synced 2026-07-22 19:57:20 +03:00
Ensure progress.size_dl/progress.size_ul are always >= 0
Historically the default "unknown" value for progress.size_dl and progress.size_ul has been zero, since these values are initialized implicitly by the calloc that allocates the curl handle that these variables are a part of. Users of curl that install progress callbacks may expect these values to always be >= 0. Currently it is possible for progress.size_dl and progress.size_ul to by set to a value of -1, if Curl_pgrsSetDownloadSize() or Curl_pgrsSetUploadSize() are passed a "size" of -1 (which a few places currently do, and a following patch will add more). So lets update Curl_pgrsSetDownloadSize() and Curl_pgrsSetUploadSize() so they make sure that these variables always contain a value that is >= 0. Updates test579 and test599. Signed-off-by: Brandon Casey <drafnel@gmail.com>
This commit is contained in:
parent
8acbb074f8
commit
6beb0eeea1
10 changed files with 47 additions and 28 deletions
|
|
@ -77,12 +77,11 @@ http://%HOSTIP:%HTTPPORT/579 log/ip579
|
|||
<verify>
|
||||
<file name="log/ip579">
|
||||
Progress callback called with UL 0 out of 0
|
||||
Progress callback called with UL 0 out of -1
|
||||
Progress callback called with UL 8 out of -1
|
||||
Progress callback called with UL 16 out of -1
|
||||
Progress callback called with UL 26 out of -1
|
||||
Progress callback called with UL 61 out of -1
|
||||
Progress callback called with UL 66 out of -1
|
||||
Progress callback called with UL 8 out of 0
|
||||
Progress callback called with UL 16 out of 0
|
||||
Progress callback called with UL 26 out of 0
|
||||
Progress callback called with UL 61 out of 0
|
||||
Progress callback called with UL 66 out of 0
|
||||
</file>
|
||||
</verify>
|
||||
</testcase>
|
||||
|
|
|
|||
|
|
@ -71,13 +71,15 @@ lib599
|
|||
HTTP GET with progress callback and redirects changing content sizes
|
||||
</name>
|
||||
<command>
|
||||
http://%HOSTIP:%HTTPPORT/599
|
||||
http://%HOSTIP:%HTTPPORT/599 log/ip599
|
||||
</command>
|
||||
</client>
|
||||
|
||||
#
|
||||
# Verify data after the test has been "shot"
|
||||
<verify>
|
||||
|
||||
<file name="log/ip599">
|
||||
CL: -1
|
||||
</file>
|
||||
</verify>
|
||||
</testcase>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ int test(char *URL)
|
|||
{
|
||||
CURL *curl;
|
||||
CURLcode res=CURLE_OK;
|
||||
double content_length = 0.0;
|
||||
|
||||
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
|
||||
fprintf(stderr, "curl_global_init() failed\n");
|
||||
|
|
@ -74,6 +75,17 @@ int test(char *URL)
|
|||
/* Perform the request, res will get the return code */
|
||||
res = curl_easy_perform(curl);
|
||||
|
||||
if (!res) {
|
||||
FILE *moo;
|
||||
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
|
||||
&content_length);
|
||||
moo = fopen(libtest_arg2, "wb");
|
||||
if (moo) {
|
||||
fprintf(moo, "CL: %.0f\n", content_length);
|
||||
fclose(moo);
|
||||
}
|
||||
}
|
||||
|
||||
test_cleanup:
|
||||
|
||||
/* always cleanup */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue