1. 30 Jun, 2017 1 commit
  2. 27 Jun, 2017 1 commit
  3. 02 Jun, 2017 1 commit
    • Kenton Varda's avatar
      Warn if AsyncOutputStream::write()'s result promise is unused. · b3cfd6be
      Kenton Varda authored
      It turns out that, quite often, the write() will have already completed before the method returns, hence dropping the returned promise won't cause any apparent problem -- until you try to write() a sufficiently large value that it doesn't complete on the first call. Then, you get mysterious bugs.
      
      Indeed, it turns out the HTTP library has such bugs, which are fixed in this change.
      b3cfd6be
  4. 26 May, 2017 2 commits
  5. 11 May, 2017 1 commit
  6. 05 May, 2017 1 commit
  7. 03 May, 2017 1 commit
    • Kenton Varda's avatar
      Fix bug with HTTP entities with `Content-Length: 0`. · d2ec1420
      Kenton Varda authored
      The entity-body would never be marked "done", breaking the pipeline for subsequent requests/responses.
      
      (In practice `Content-Length: 0` is rare since normally only GET requests don't have content and they don't pass `Content-Length` at all.)
      d2ec1420
  8. 29 Apr, 2017 2 commits
  9. 27 Apr, 2017 2 commits
  10. 26 Apr, 2017 1 commit
  11. 25 Apr, 2017 1 commit
  12. 21 Apr, 2017 1 commit
  13. 15 Apr, 2017 2 commits
  14. 07 Apr, 2017 1 commit
  15. 27 Jan, 2017 3 commits
  16. 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