- Add heartbeat timeout to client control connection using server heartbeats for dead connection detection
- Introduce exponential backoff with jitter for reconnection delays
- Add CLI flags: --no-reconnect to disable auto-reconnect, --max-reconnect-delay to configure backoff cap
- Classify authentication errors as fatal (never retried), all others retried automatically
- Configure TCP keepalive on control connections for OS-level dead connection detection
- Update documentation (README.md, CLAUDE.md) to describe reconnection behavior and new flags
- Add unit tests for backoff logic and error classification
This commit introduces a new option to specify the IP address where tunnels
will listen, which may be different from the control server's IP address.
A new flag `--tunnels-addr` can specify the IP addr to bind to. Default is set
to `0.0.0.0` which is the previous behavior.
This commit adds the ability to bind the control server to a specific network
interface via an additional flag `--control-addr`.
By default it listens on `0.0.0.0` which is the previous behaviour.
* using stream
* fix tests
* 💄
* 💄 fix review comments
* clean up buffered data
* 💄 fix review comments
* Refactor Delimited to be its own struct
* Add very_long_frame test to ensure behavior
Co-authored-by: Eric Zhang <ekzhang1@gmail.com>
* Deps: use specific Tokio features
* Deps: run `cargo update`
* Refactor: move CLI-parsing outside Tokio runtime
* Fix: use `parse` over `try_parse`
Clap does special things behind the scenes before it exits.
* Refactor: use `tokio::main` macro for convenience
* Add a configuration to allow forward to a different local host
* Minor documentation / formatting change
Co-authored-by: Eric Zhang <ekzhang1@gmail.com>
* Kill connections immediately on missing or close
* Add timeout to initial protocol messages
* Add low-level tracing for JSON messages
* Add timeout to initial TCP connections