If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
set to 1, CURLOPT_NOBODY will now automatically be set to 0.
diff --git a/CHANGES b/CHANGES
index c06710c..b6b5a83 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,10 @@
                                   Changelog
 
 
+Daniel (28 July 2005)
+- If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
+  set to 1, CURLOPT_NOBODY will now automatically be set to 0.
+
 Daniel (27 July 2005)
 - Dan Fandrich changes over the last week: fixed numerous minor configure
   option parsing flaws: --without-gnutls, --without-spnego --without-gssapi
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 4e119d1..59bbbf4 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -18,6 +18,7 @@
 
 This release includes the following bugfixes:
 
+ o CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST resets CURLOPT_NOBODY
  o builds fine on AmigaOS again
  o corrected date parsing on Windows with auto-DST-adjust enabled
  o treats CONNECT 407 responses with bodies better during Digest/NTLM auth
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 75fc289..8f653f5 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -21,7 +21,7 @@
 .\" * $Id$
 .\" **************************************************************************
 .\"
-.TH curl_easy_setopt 3 "13 Jul 2005" "libcurl 7.14.1" "libcurl Manual"
+.TH curl_easy_setopt 3 "28 Jul 2005" "libcurl 7.14.1" "libcurl Manual"
 .SH NAME
 curl_easy_setopt - set options for a curl easy handle
 .SH SYNOPSIS
@@ -525,8 +525,11 @@
 \fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
 specify the size in the request.
 
-NOTE: if you have issued a POST request and want to make a HEAD or GET
-instead, you must explictly pick the new request type using
+When setting \fICURLOPT_POST\fP to a non-zero value, it will automatically set
+\fICURLOPT_NOBODY\fP to 0.
+
+If you issue a POST request and then want to make a HEAD or GET using the same
+re-used handle, you must explictly set the new request type using
 \fICURLOPT_NOBODY\fP or \fICURLOPT_HTTPGET\fP or similar.
 .IP CURLOPT_POSTFIELDS
 Pass a char * as parameter, which should be the full data to post in an HTTP
@@ -564,6 +567,9 @@
 
 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
 You can disable this header with \fICURLOPT_HTTPHEADER\fP as usual.
+
+When setting \fICURLOPT_HTTPPOST\fP, it will automatically set
+\fICURLOPT_NOBODY\fP to 0.
 .IP CURLOPT_REFERER
 Pass a pointer to a zero terminated string as parameter. It will be used to
 set the Referer: header in the http request sent to the remote server. This
@@ -664,6 +670,9 @@
 Pass a long. If the long is non-zero, this forces the HTTP request to get back
 to GET. usable if a POST, HEAD, PUT or a custom request have been used
 previously using the same curl handle.
+
+When setting \fICURLOPT_HTTPGET\fP to a non-zero value, it will automatically
+set \fICURLOPT_NOBODY\fP to 0.
 .IP CURLOPT_HTTP_VERSION
 Pass a long, set to one of the values described below. They force libcurl to
 use the specific HTTP versions. This is not sensible to do unless you have a
diff --git a/lib/url.c b/lib/url.c
index 07a34a9..7c34ee1 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -644,8 +644,10 @@
     /* Does this option serve a purpose anymore? Yes it does, when
        CURLOPT_POSTFIELDS isn't used and the POST data is read off the
        callback! */
-    if(va_arg(param, long))
+    if(va_arg(param, long)) {
       data->set.httpreq = HTTPREQ_POST;
+      data->set.opt_no_body = FALSE; /* this is implied */
+    }
     else
       data->set.httpreq = HTTPREQ_GET;
     break;
@@ -680,6 +682,7 @@
      */
     data->set.httppost = va_arg(param, struct curl_httppost *);
     data->set.httpreq = HTTPREQ_POST_FORM;
+    data->set.opt_no_body = FALSE; /* this is implied */
     break;
 
   case CURLOPT_REFERER:
@@ -813,6 +816,7 @@
     if(va_arg(param, long)) {
       data->set.httpreq = HTTPREQ_GET;
       data->set.upload = FALSE; /* switch off upload */
+      data->set.opt_no_body = FALSE; /* this is implied */
     }
     break;