]> granicus.if.org Git - curl/commitdiff
- After a bug reported by James Cheng I've made curl_easy_getinfo() for
authorDaniel Stenberg <daniel@haxx.se>
Mon, 23 Feb 2009 18:45:00 +0000 (18:45 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 23 Feb 2009 18:45:00 +0000 (18:45 +0000)
  CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD return
  -1 if the sizes aren't know. Previously these returned 0, make it impossible
  to detect the difference between actually zero and unknown.

CHANGES
RELEASE-NOTES
TODO-RELEASE
docs/libcurl/curl_easy_getinfo.3
lib/getinfo.c

diff --git a/CHANGES b/CHANGES
index d33a25b3a3c3485afd4179e474b6ad9c76e0741f..62c24de7e00656630fc532f8b56b8c3fb0902e7a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,12 @@
 
                                   Changelog
 
+Daniel Stenberg (23 Feb 2009)
+- After a bug reported by James Cheng I've made curl_easy_getinfo() for
+  CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD return
+  -1 if the sizes aren't know. Previously these returned 0, make it impossible
+  to detect the difference between actually zero and unknown.
+
 Yang Tse (23 Feb 2009)
 - Daniel Johnson provided a shell script that will perform all the steps needed
   to build a Mac OS X fat ppc/i386 or ppc64/x86_64 libcurl.framework
index 1dda269722cbea5512ac570c6764369e01d5da2b..a5a722123e381c17ca4e3d8e8f9655f2756c02d2 100644 (file)
@@ -41,6 +41,8 @@ This release includes the following bugfixes:
    easily on transfer failures
  o compilation halting when using VS2008 to build a Windows 2000 target
  o ease creation of libcurl Mac OS X Framework
+ o CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD are -1
+   if unknown
 
 This release includes the following known bugs:
 
@@ -53,6 +55,6 @@ advice from friends like these:
  Peter Sylvester, Chad Monroe, Markus Moeller, Yang Tse, Scott Cantor,
  Patrick Scott, Hidemoto Nakada, Jocelyn Jaubert, Andre Guibert de Bruet,
  Kamil Dudka, Patrik Thunstrom, Linus Nielsen Feltzing, Mark Incley,
- Daniel Johnson
+ Daniel Johnson, James Cheng
 
         Thanks! (and sorry if I forgot to mention someone)
index 6bf1187ef76d058e78aa9a3cdffb11853f8359f1..c5443870b82902d53c1ab1e338c94df1cd3ea2c1 100644 (file)
@@ -8,9 +8,6 @@ To be addressed in 7.19.4 (planned release: March 2009)
 218 - Senthil Raja Velu's "CURLOPT_LOCALPORT option broken", patch by 
       Markus Koetter
 
-219 - James Cheng's bug "How to detect missing Content-Length response header?"
-
-
 To be addressed in 7.19.5 (planned release: May 2009)
 =========================
 
index 6c999cb7da62545b18744b62a9e1afccda7888b4..63aea1b849879d57876656982d06339d62518d7f 100644 (file)
@@ -134,9 +134,11 @@ on the list pointer once you're done with it, as libcurl will not free the
 data for you. (Added in 7.12.3)
 .IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
 Pass a pointer to a double to receive the content-length of the download. This
-is the value read from the Content-Length: field.
+is the value read from the Content-Length: field. Since 7.19.4, this returns -1
+if the size isn't known.
 .IP CURLINFO_CONTENT_LENGTH_UPLOAD
-Pass a pointer to a double to receive the specified size of the upload.
+Pass a pointer to a double to receive the specified size of the upload.  Since
+7.19.4, this returns -1 if the size isn't known.
 .IP CURLINFO_CONTENT_TYPE
 Pass a pointer to a 'char *' to receive the content-type of the downloaded
 object. This is the value read from the Content-Type: field. If you get NULL,
index bc387c96074ff714e13773873cb082e95f49a753..4aa813797c46e5150a2aa0778a522d8c8c302e48 100644 (file)
@@ -35,6 +35,7 @@
 #include "memory.h"
 #include "sslgen.h"
 #include "connect.h" /* Curl_getconnectinfo() */
+#include "progress.h"
 
 /* Make this the last #include */
 #include "memdebug.h"
@@ -167,10 +168,12 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
     *param_longp = data->set.ssl.certverifyresult;
     break;
   case CURLINFO_CONTENT_LENGTH_DOWNLOAD:
-    *param_doublep = (double)data->progress.size_dl;
+    *param_doublep = (data->progress.flags & PGRS_DL_SIZE_KNOWN)?
+      (double)data->progress.size_dl:-1;
     break;
   case CURLINFO_CONTENT_LENGTH_UPLOAD:
-    *param_doublep = (double)data->progress.size_ul;
+    *param_doublep = (data->progress.flags & PGRS_UL_SIZE_KNOWN)?
+      (double)data->progress.size_ul:-1;
     break;
   case CURLINFO_REDIRECT_TIME:
     *param_doublep =  data->progress.t_redirect;