Skip to content

Implement HTTP/2 CONNECT #248

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions