When the server disconnects, Close() was closing both stopCh and writeCh. The TAP→Server goroutine could race and send to the closed writeCh, causing a panic. Fix: don't close writeCh in Close(), let writeLoop exit via stopCh instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| client.go | ||
| crypto.go | ||
| tunnel.go | ||