Skip to content

Latest commit

 

History

History
76 lines (59 loc) · 3.55 KB

TODO.md

File metadata and controls

76 lines (59 loc) · 3.55 KB

Incomplete TODO items

All the things I've found out on the way, that need retouching

  • consider replacing Result with T and throw instead.
  • http: rework HttpClient API (so it's becoming dead-easy to be used within proxy code)
  • http.client: HttpClient to support fastcgi
  • http.cluster: HealthMonitor to support fastcgi

Intermediate 0

  • unit tests: adapt to API changes

    • raft::InetTransport (<- LocalTransport)
    • http1::Connection (<- LocalTransport)
    • HttpClient (<- local HttpServer)
  • ??? rewrite some throw's to Result<>|std::error_code returns

  • eliminate DataChainListener and/or greatly simplify DataChain

  • eliminate need of EndPointWriter via DataChain

  • ??? eliminate TcpUtil

  • HttpListener: onMessageContent(HugeBuffer&&) instead

  • extend FCGI connector to tweak maxKeepAlive (just like in HTTP/1)

    • make sure the keepalive-timeout is fired correctly
      • test cancellation (due to io) and fire (due to timeout).
  • http2: use wireshark to get binary expected data for the Parser & Generator tests

  • easy enablement of FCGI in all http examples.

General

  • SSL: SslConnector: add optional support to also allow plaintext connections
  • SSL: ability to setup a certificate password challenge callback
  • SSL: support different session cache stores (memory, memcached, ...)
  • SSL: support enabling/disabling SSL renegotiation - http://www.thc.org/thc-ssl-dos/
  • SSL: ensure we can reconfigure cipher priorities to counter BEAST attack - http://www.g-loaded.eu/2011/09/27/mod_gnutls-rc4-cipher-beast/
  • http: ensure TCP_CORK / TCP_NOPUSH is set/cleared implicitely in plaintext vs interactive http responses

HTTP load balancer (catch-up, rewrite, testing, polishing)

  • test: test each public API is well tested
  • raise 504 (gateway timeout) if backend page load takes too long and no result has been sent to the client yet (close connection directly otherwise).

x0d

  • stdout/stderr to point to log stream/handler directly,
  • add x0d --dump-du (dump flow's def-use chain)
  • resource management (at least for max_core_size) must be evaluated after privilege dropping, in case there is some, or they're lost.

miscellaneous

  • core: Process (QA: prefer posix_spawn() over vfork() to exec child processes)
  • net: improved EndPoint timeout handling (distinguish between read/write/keepalive timeouts)
  • HttpTransport::onInterestFailure() => (factory || connector)->report(this, error);
  • http: chunked request trailer support & unit test
  • doc: doxygen: how to document a group of functions all at once (or, how to copydoc)
  • test: call completed() before contentLength is satisfied in non-chunked mode (shall be transport generic)
  • test: attempt to write more data than contentLength in non-chunked mode (shall be transport generic)
  • logging: improve (debug) logging facility

ALREADY DONE

  • BUG: testing: EXPECTxx failures do also increment success count?
  • test: ensure HttpStatus::NoResponse actually terminates the transport instant
  • redesigned error handling
  • LinuxScheduler (epoll, signalfd, eventfd)
  • FCGI transport
  • SSL: basic SslConnector & SslEndPoint
  • SSL: finish SNI support
  • SSL: NPN support
  • SSL: ALPN support
  • SSL: SslConnector to select ConnectionFactory based on NPN/ALPN
  • UdpConnector
  • improve timeout management (ideally testable)
  • InetEndPoint::wantFill() to honor TCP_DEFER_ACCEPT
  • test: write full tests for HttpFileHandler using MockTransport