http2: support "prior knowledge", no upgrade from HTTP/1.1

Supports HTTP/2 over clear TCP

- Optimize switching to HTTP/2 by removing calls to init and setup
before switching. Switching will eventually call setup and setup calls
init.

- Supports new version to “force” the use of HTTP/2 over clean TCP

- Add common line parameter “--http2-prior-knowledge” to the Curl
  command line tool.
This commit is contained in:
Diego Bes 2016-03-18 15:25:56 -07:00 committed by Daniel Stenberg
parent e683182918
commit 324a97ecf8
7 changed files with 29 additions and 8 deletions

View file

@ -184,6 +184,7 @@ static const struct LongShort aliases[]= {
{"0", "http1.0", FALSE},
{"01", "http1.1", FALSE},
{"02", "http2", FALSE},
{"03", "http2-prior-knowledge", FALSE},
{"1", "tlsv1", FALSE},
{"10", "tlsv1.0", FALSE},
{"11", "tlsv1.1", FALSE},
@ -1036,6 +1037,10 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
/* HTTP version 2.0 */
config->httpversion = CURL_HTTP_VERSION_2_0;
break;
case '3':
/* HTTP version 2.0 over clean TCP*/
config->httpversion = CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE;
break;
}
break;
case '1': /* --tlsv1* options */

View file

@ -111,6 +111,7 @@ static const char *const helptext[] = {
" -0, --http1.0 Use HTTP 1.0 (H)",
" --http1.1 Use HTTP 1.1 (H)",
" --http2 Use HTTP 2 (H)",
" --http2-prior-knowledge Use HTTP 2 without HTTP/1.1 Upgrade (H)",
" --ignore-content-length Ignore the HTTP Content-Length header",
" -i, --include Include protocol headers in the output (H/F)",
" -k, --insecure Allow connections to SSL sites without certs (H)",