Skip to content

Implement HTTP/2 CONNECT #248

@essen

Description

@essen

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions