Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP/2 support #279

Open
ademar opened this issue Jul 22, 2015 · 2 comments
Open

HTTP/2 support #279

ademar opened this issue Jul 22, 2015 · 2 comments
Assignees
Milestone

Comments

@ademar
Copy link
Member

ademar commented Jul 22, 2015

@ademar ademar added the feature label Jul 22, 2015
@haf haf added this to the v2 milestone Nov 9, 2015
@haf
Copy link
Contributor

haf commented Nov 9, 2015

Added a nice podcast about HTTP2

@mjr5749
Copy link

mjr5749 commented Apr 13, 2016

Making some notes as I go through the spec...

Section 3 describes the 3 ways a client/server can establish an HTTP/2 connection:

3.2 Starting HTTP/2 for "http" URIs

This uses the HTTP/1.1 Upgrade mechanism to switch from HTTP/1.1 to HTTP/2 mid-connection. This seems like the most complicated setup from the server perspective because it has to "talk" both HTTP/1.1 and HTTP/2 over the same connection.

3.3 Starting HTTP/2 for "https" URIs

The spec requires that HTTP/2 of TLS must negotiate the protocol using the TLS ALPN extension.

The SslStream API used by the Suave DefaultTlsProvider does not provide ALPN support at this time:
https://github.com/dotnet/corefx/issues/4721

The OpenSSL TLS provider in Suave does not look like it has ALPN support, but it may be possible to build it on top of OpenSSL APIs.
https://www.openssl.org/docs/manmaster/ssl/SSL_set_alpn_protos.html

3.4 Starting HTTP/2 with Prior Knowledge

If the client knows that the server supports HTTP/2 through outside means, it can immediately start talking the protocol through a clear-text TCP connection.

This should be the most straight-forward to implement for a server, as it could listen on a port specifically intended for HTTP/2 connections.

The spec only supports this method of protocol version identification for clear-text connections, and not for HTTP/2 over TLS.

@ademar ademar mentioned this issue May 6, 2016
@ademar ademar self-assigned this Jun 4, 2016
@ademar ademar removed the you-take-it label Oct 5, 2016
@ademar ademar modified the milestones: v3, v2 Nov 2, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants