]> granicus.if.org Git - curl/commitdiff
- Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method to
authorDaniel Stenberg <daniel@haxx.se>
Thu, 3 Apr 2008 21:44:49 +0000 (21:44 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 3 Apr 2008 21:44:49 +0000 (21:44 +0000)
  GET simply because previously when you set CURLOPT_NOBODY to TRUE first and
  then FALSE you'd end up in a broken state where a HTTP request would do a
  HEAD by still act a lot like for a GET and hang waiting for the content etc.

CHANGES
RELEASE-NOTES
TODO-RELEASE
lib/url.c

diff --git a/CHANGES b/CHANGES
index e55bd540ad91efa76cd645356705df0dd420bbc0..e11ae621a7ddaf3685e77fefdbf5e3c6cf8fe574 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,11 @@
                                   Changelog
 
 Daniel Stenberg (3 Apr 2008)
+- Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method to
+  GET simply because previously when you set CURLOPT_NOBODY to TRUE first and
+  then FALSE you'd end up in a broken state where a HTTP request would do a
+  HEAD by still act a lot like for a GET and hang waiting for the content etc.
+
 - Scott Barrett added support for CURLOPT_NOBODY over SFTP
 
 Daniel Fandrich (3 Apr 2008)
index 19a053ea1ece5872f715282c05797cc7f40da6c3..912983ad0a3a5b8eb9a7e16be2327330c5854bdb 100644 (file)
@@ -15,7 +15,8 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
- o 
+ o CURLOPT_NOBODY first set to TRUE and then FALSE for HTTP no longer causes
+   the confusion that could lead to a hung transfer
 
 This release includes the following known bugs:
 
index 1a6e188460d4e64c658277f11afbb8aeacc0f775..650e8915dc30abb83808399e5ae1a5482dd0af0d 100644 (file)
@@ -7,7 +7,4 @@ To be addressed before 7.18.2 (planned release: June 2008)
 
 130 - Vincent Le Normand's SFTP patch for touch (lacking feedback)
 
-133 - Setting CURLOPT_NOBODY to "false" causes cURL to wait for content if a
-      content-length header is read
-
 134 - 
index 9d782359b5252ef8b753867fb398b9640bb4767d..92f7156d33d0014f027df1babeba55ae282287fa 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -858,9 +858,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
      * Do not include the body part in the output data stream.
      */
     data->set.opt_no_body = (bool)(0 != va_arg(param, long));
-    if(data->set.opt_no_body)
-      /* in HTTP lingo, this means using the HEAD request */
-      data->set.httpreq = HTTPREQ_HEAD;
+
+    /* in HTTP lingo, no body means using the HEAD request and if unset there
+       really is no perfect method that is the "opposite" of HEAD but in
+       reality most people probably think GET then. The important thing is
+       that we can't let it remain HEAD if the opt_no_body is set FALSE since
+       then we'll behave wrong when getting HTTP. */
+    data->set.httpreq = data->set.opt_no_body?HTTPREQ_HEAD:HTTPREQ_GET;
     break;
   case CURLOPT_FAILONERROR:
     /*