data->current_speed = -1; /* init to negative == impossible */
+ data->httpreq = HTTPREQ_GET; /* Default HTTP request */
+
*curl = data;
return CURLE_OK;
}
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;
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;
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 *);
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;
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;
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 */
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 */