Skip to content
Snippets Groups Projects
  • Tatsuhiro Tsujikawa's avatar
    63b26d88
    HTTP2: add layer between existing http and socket(TLS) layer · 63b26d88
    Tatsuhiro Tsujikawa authored
    This patch chooses different approach to integrate HTTP2 into HTTP curl
    stack. The idea is that we insert HTTP2 layer between HTTP code and
    socket(TLS) layer. When HTTP2 is initialized (either in NPN or Upgrade),
    we replace the Curl_recv/Curl_send callbacks with HTTP2's, but keep the
    original callbacks in http_conn struct. When sending serialized data by
    nghttp2, we use original Curl_send callback. Likewise, when reading data
    from network, we use original Curl_recv callback. In this way we can
    treat both TLS and non-TLS connections.
    
    With this patch, one can transfer contents from https://twitter.com and
    from nghttp2 test server in plain HTTP as well.
    
    The code still has rough edges. The notable one is I could not figure
    out how to call nghttp2_session_send() when underlying socket is
    writable.
    63b26d88
    History
    HTTP2: add layer between existing http and socket(TLS) layer
    Tatsuhiro Tsujikawa authored
    This patch chooses different approach to integrate HTTP2 into HTTP curl
    stack. The idea is that we insert HTTP2 layer between HTTP code and
    socket(TLS) layer. When HTTP2 is initialized (either in NPN or Upgrade),
    we replace the Curl_recv/Curl_send callbacks with HTTP2's, but keep the
    original callbacks in http_conn struct. When sending serialized data by
    nghttp2, we use original Curl_send callback. Likewise, when reading data
    from network, we use original Curl_recv callback. In this way we can
    treat both TLS and non-TLS connections.
    
    With this patch, one can transfer contents from https://twitter.com and
    from nghttp2 test server in plain HTTP as well.
    
    The code still has rough edges. The notable one is I could not figure
    out how to call nghttp2_session_send() when underlying socket is
    writable.