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

Implement HTTP/2 CONNECT #248

Open
4 of 11 tasks
essen opened this issue Oct 4, 2020 · 6 comments
Open
4 of 11 tasks

Implement HTTP/2 CONNECT #248

essen opened this issue Oct 4, 2020 · 6 comments

Comments

@essen
Copy link
Member

essen commented Oct 4, 2020

The branch http2-connect has been merged. Some points remain for improved support though.

  • HTTP/2 timeouts are not propagated to the right layer. This will require Cowlib changes, hopefully not breaking changes.
  • Events are for the most part not triggered.
  • The set_cookie command is ignored when a tunnel uses it, and tunnels do not store cookie as a result. The set_cookie commands must be passed all the way down to the gun module.
  • The internals could use some documentation to remember how it all works, particularly around the TLS handling, with a distinction between HTTP/1.1 / SOCKS tunnels vs tunnels that involve HTTP/2.
  • Sometimes gun:stream_info will not return the reply_to pid for tunneled streams, it will return undefined. The switch_protocol command should be changed to add the reply_to value.
  • There's no error handling therefore errors will probably lead to crashes. The same applies to the connection being closed by the remote endpoint.
  • It is unclear how keepalive should be handled for tunnels.
  • There's no support for graceful shutdown for tunnel streams.
  • Graceful shutdown of the entire connection will not gracefully shut down tunnels.
  • Flow control has not been implemented. Thought need to be given over how it should be implemented, both for normal CONNECT and for HTTP/2 Websocket.
  • There seems to be no support for automatic transport detection based on the port number (like gun:open).

The code could also really use a good cleanup and todos to be solved.

@essen
Copy link
Member Author

essen commented Oct 7, 2020

HTTP/2 timeouts are now properly propagated.

@essen
Copy link
Member Author

essen commented Oct 16, 2020

Events are now for the most part triggered.

@essen
Copy link
Member Author

essen commented Oct 21, 2020

I've reworked cookie handling for tunnels. The set_cookie command was removed and instead the cookie store is passed around where necessary. We no longer need a commands queue and whatnot.

@essen
Copy link
Member Author

essen commented Nov 2, 2020

I've added flow control as a point to be tested and fixed. It also concerns Websocket over HTTP/2.

@essen
Copy link
Member Author

essen commented Nov 11, 2020

@essen
Copy link
Member Author

essen commented Nov 16, 2020

Added "There seems to be no support for automatic transport detection based on the port number (like gun:open)."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant