From fcb347d1249df552ef37faf47e2a15dbed5e7ce5 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 26 Jan 2001 15:52:01 +0000 Subject: [PATCH] Added a httpreq field in the main struct so that there's one field to check for what HTTP request that is being used. The old bit-style fields are still in there as well. --- lib/url.c | 9 ++++++--- lib/urldata.h | 22 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/url.c b/lib/url.c index 30cc64ffc..7a69ff691 100644 --- 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 *); diff --git a/lib/urldata.h b/lib/urldata.h index 6a56eb1d0..e053caffd 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -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 */