fix: draining remote stream after port-forward connection broken

Signed-off-by: Nic <qianyong@api7.ai>

Kubernetes-commit: dbe6b6657bacc846656f4009ee869ca996dde1da
This commit is contained in:
Nic 2024-10-04 14:48:15 +08:00 committed by Kubernetes Publisher
parent 2d3b1e2feb
commit d6404c8d76

View File

@ -406,6 +406,11 @@ func (pf *PortForwarder) handleConnection(conn net.Conn, port ForwardedPort) {
case <-remoteDone:
case <-localError:
}
/*
reset dataStream to discard any unsent data, preventing port forwarding from being blocked.
we must reset dataStream before waiting on errorChan, otherwise, the blocking data will affect errorStream and cause <-errorChan to block indefinitely.
*/
_ = dataStream.Reset()
// always expect something on errorChan (it may be nil)
err = <-errorChan