1. 24 Sep, 2017 1 commit
    • Kenton Varda's avatar
      Sec-WebSocket-Extensions is a connection-level header. · 2d956813
      Kenton Varda authored
      We don't support any extensions currently, but it's important that when acting as a proxy, we don't pass through this header, since it could result in the client and server negotiating extensions that the proxy doesn't understand and will botch.
      2d956813
  2. 22 Sep, 2017 1 commit
  3. 21 Sep, 2017 1 commit
    • Kenton Varda's avatar
      Implement HttpClient that automatically manages connections. · 2751b577
      Kenton Varda authored
      There are actually two new client types:
      - One which always connects to a given NetworkAddress, but will automatically manage a pool of reusable connections.
      - One which looks up the remote address based on the URL it is given, and manages a pool of connections for each host.
      
      The latter of these two is a "true HTTP client library".
      2751b577
  4. 05 Sep, 2017 1 commit
  5. 04 Sep, 2017 2 commits
  6. 18 Aug, 2017 1 commit
  7. 15 Aug, 2017 4 commits
  8. 26 May, 2017 1 commit
  9. 02 May, 2017 1 commit
  10. 29 Apr, 2017 2 commits
  11. 27 Apr, 2017 1 commit
  12. 27 Jan, 2017 4 commits
  13. 24 Jan, 2017 1 commit
    • Kenton Varda's avatar
      Add HTTP client and server implementation. · 8f5d1f10
      Kenton Varda authored
      Properties:
      - Presented as a LIBRARY, designed to be unopinionated about the application using it.
      - Uses KJ async framework.
      - Header parsing is zero-copy. The whole header block is read into a contiguous buffer, then parsed all at once. Avoids complicated state machinery (and is probably pretty fast).
      - Known headers are parsed to numeric identifiers so that the application doesn't need to look them up by string name. The app registers all headers it is interested in upfront, receiving numeric IDs for each. Some common headers also have pre-defined constants, avoiding the need for registration.
      - Connection-level headers (e.g. Content-Length, Transfer-Encoding) are handled entirely internally.
      - WebSocket support (planned).
      
      Not done yet:
      - Implement the version of HttpClient that connects to new servers as-needed, managing a pool of connections. Currently I've only implemented the version that takes a pre-existing connection and speaks HTTP on it.
      - Implement WebSockets.
      - Implement plugable transfer encodings (although I guess Chrome doesn't even support transfer encodings other than chunked; maybe it's a lost cause).
      - Implement HTTP/2, hopefully transparently (... someday).
      8f5d1f10