Implement server-side HTTP persistence (keepalive) for the i2p socket
(persistence phase 2b).
This MR builds on previous MR !176 (merged) which added client-side support. See that MR or the merge checkin for details. Server-side persistence only occurs when requested by the client side As with the client-side changes, this is enabled by default but may be disabled on a per-tunnel basis.
Note that the new keepalive do/while loop in I2PTunnelHTTPServer is inserted without reindenting about 350 lines of code in between. The loop is clearly marked. This is for ease of review. The indenting can be fixed up after merge if desired.
As documented in the previous MR, this does not add support for persistence of the server socket (phase 3) and there are no plans to do so.
Other changes:
- Run the POST/CONNECT sender in the client thread pool
- Adjust/fix timeouts
- Add timeout param to readHeaders()