http: added options for allowing HTTP/0.9 responses

Added CURLOPT_HTTP09_ALLOWED and --http0.9 for this purpose.

For now, both the tool and library allow HTTP/0.9 by default.
docs/DEPRECATE.md lays out the plan for when to reverse that default: 6
months after the 7.64.0 release. The options are added already now so
that applications/scripts can start using them already now.

Fixes #2873
Closes #3383
This commit is contained in:
Daniel Stenberg 2018-12-17 15:46:56 +01:00
parent db9776ea00
commit 006ff62d8c
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
36 changed files with 396 additions and 59 deletions

View file

@ -43,6 +43,7 @@ void config_init(struct OperationConfig* config)
config->proto_default = NULL;
config->tcp_nodelay = TRUE; /* enabled by default */
config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
config->http09_allowed = TRUE;
}
static void free_config_fields(struct OperationConfig *config)

View file

@ -146,6 +146,7 @@ struct OperationConfig {
char *krblevel;
char *request_target;
long httpversion;
bool http09_allowed;
bool nobuffer;
bool readbusy; /* set when reading input returns EAGAIN */
bool globoff;

View file

@ -199,6 +199,7 @@ static const struct LongShort aliases[]= {
{"01", "http1.1", ARG_NONE},
{"02", "http2", ARG_NONE},
{"03", "http2-prior-knowledge", ARG_NONE},
{"09", "http0.9", ARG_BOOL},
{"1", "tlsv1", ARG_NONE},
{"10", "tlsv1.0", ARG_NONE},
{"11", "tlsv1.1", ARG_NONE},
@ -1183,6 +1184,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
/* HTTP version 2.0 over clean TCP*/
config->httpversion = CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE;
break;
case '9':
/* Allow HTTP/0.9 responses! */
config->http09_allowed = toggle;
break;
}
break;
case '1': /* --tlsv1* options */

View file

@ -176,6 +176,8 @@ static const struct helptxt helptext[] = {
"This help text"},
{" --hostpubmd5 <md5>",
"Acceptable MD5 hash of the host public key"},
{" --http0.9",
"Allow HTTP 0.9 responses"},
{"-0, --http1.0",
"Use HTTP 1.0"},
{" --http1.1",

View file

@ -1005,6 +1005,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
/* new in libcurl 7.21.6 */
if(config->tr_encoding)
my_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L);
/* new in libcurl 7.64.0 */
my_setopt(curl, CURLOPT_HTTP09_ALLOWED, config->http09_allowed);
} /* (built_in_protos & CURLPROTO_HTTP) */