Problem
In internal/proxy/proxy.go:30-41, every non-closed listener error is logged and immediately retried.
Persistent errors such as EMFILE or ENFILE can cause a tight CPU/logging loop, making an already degraded process less stable.
Acceptance criteria
- Add bounded exponential backoff for repeated Accept failures.
- Reset the backoff after a successful accept.
- Continue returning cleanly for net.ErrClosed.
- Add a deterministic test using a listener that repeatedly returns an error.
Problem
In internal/proxy/proxy.go:30-41, every non-closed listener error is logged and immediately retried.
Persistent errors such as EMFILE or ENFILE can cause a tight CPU/logging loop, making an already degraded process less stable.
Acceptance criteria