Added a httpreq field in the main struct so that there's one field to check
authorDaniel Stenberg <daniel@haxx.se>
Fri, 26 Jan 2001 15:52:01 +0000 (15:52 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 26 Jan 2001 15:52:01 +0000 (15:52 +0000)
for what HTTP request that is being used. The old bit-style fields are still
in there as well.

lib/url.c
lib/urldata.h

index 30cc64ffca781b6b276be21459c153c26c20d5b6..7a69ff69112f37f8c4854ee3fde2d84b22397ff7 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -301,6 +301,8 @@ CURLcode curl_open(CURL **curl, char *url)
 
     data->current_speed = -1; /* init to negative == impossible */
 
+    data->httpreq = HTTPREQ_GET; /* Default HTTP request */
+
     *curl = data;
     return CURLE_OK;
   }
@@ -340,6 +342,7 @@ CURLcode curl_setopt(CURL *curl, CURLoption option, ...)
     break;
   case CURLOPT_POST:
     data->bits.http_post = va_arg(param, long)?TRUE:FALSE;
+    data->httpreq = HTTPREQ_POST;
     break;
   case CURLOPT_FILETIME:
     data->bits.get_filetime = va_arg(param, long)?TRUE:FALSE;
@@ -361,19 +364,17 @@ CURLcode curl_setopt(CURL *curl, CURLoption option, ...)
     break;
   case CURLOPT_PUT:
     data->bits.http_put = va_arg(param, long)?TRUE:FALSE;
+    data->httpreq = HTTPREQ_PUT;
     break;
   case CURLOPT_MUTE:
     data->bits.mute = va_arg(param, long)?TRUE:FALSE;
     break;
-
   case CURLOPT_TIMECONDITION:
     data->timecondition = va_arg(param, long);
     break;
-
   case CURLOPT_TIMEVALUE:
     data->timevalue = va_arg(param, long);
     break;
-
   case CURLOPT_SSLVERSION:
     data->ssl.version = va_arg(param, long);
     break;
@@ -405,10 +406,12 @@ CURLcode curl_setopt(CURL *curl, CURLoption option, ...)
     break;
   case CURLOPT_CUSTOMREQUEST:
     data->customrequest = va_arg(param, char *);
+    data->httpreq = HTTPREQ_CUSTOM;
     break;
   case CURLOPT_HTTPPOST:
     data->httppost = va_arg(param, struct HttpPost *);
     data->bits.http_formpost = data->httppost?1:0;
+    data->httpreq = HTTPREQ_POST_FORM;
     break;
   case CURLOPT_INFILE:
     data->in = va_arg(param, FILE *);
index 6a56eb1d0b4a7b994a5d8930592e11f5d8f16a04..e053caffdec9a428d677e3b3412e1f3aa487a410 100644 (file)
@@ -278,9 +278,25 @@ struct FTP {
   char *file;    /* decoded file */
 };
 
+typedef enum {
+  HTTPREQ_NONE, /* first in list */
+  HTTPREQ_GET,
+  HTTPREQ_POST,
+  HTTPREQ_POST_FORM, /* we make a difference internally */
+  HTTPREQ_PUT,
+  HTTPREQ_CUSTOM,
+  HTTPREQ_LAST /* last in list */
+} Curl_HttpReq;
+
 /* This struct is for boolean settings that define how to behave during
    this session. */
 struct Configbits {
+  /* these four request types mirror the httpreq field */
+  bool http_formpost;
+  bool http_post;
+  bool http_put;
+  bool http_get;
+
   bool get_filetime;
   bool tunnel_thru_httpproxy;
   bool ftp_append;
@@ -290,10 +306,7 @@ struct Configbits {
   bool hide_progress;
   bool http_fail_on_error;
   bool http_follow_location;
-  bool http_formpost;
   bool http_include_header;
-  bool http_post;
-  bool http_put;
   bool http_set_referer;
   bool http_auto_referer; /* set "correct" referer when following location: */
   bool httpproxy;
@@ -308,7 +321,6 @@ struct Configbits {
   bool verbose;
   bool this_is_a_follow; /* this is a followed Location: request */
   bool krb4; /* kerberos4 connection requested */
-
   bool proxystringalloc; /* the http proxy string is malloc()'ed */
   bool rangestringalloc; /* the range string is malloc()'ed */
   bool urlstringalloc;   /* the URL string is malloc()'ed */
@@ -481,6 +493,8 @@ struct UrlData {
   TimeCond timecondition; /* kind of comparison */
   time_t timevalue;       /* what time to compare with */
 
+  Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */
+
   char *customrequest; /* http/ftp request to use */
 
   char *headerbuff; /* allocated buffer to store headers in */