From d6404c8d76d6891022a33e91f5d5879c3a883cf6 Mon Sep 17 00:00:00 2001 From: Nic Date: Fri, 4 Oct 2024 14:48:15 +0800 Subject: [PATCH] fix: draining remote stream after port-forward connection broken Signed-off-by: Nic Kubernetes-commit: dbe6b6657bacc846656f4009ee869ca996dde1da --- tools/portforward/portforward.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/portforward/portforward.go b/tools/portforward/portforward.go index 83ef3e92..ec26efdd 100644 --- a/tools/portforward/portforward.go +++ b/tools/portforward/portforward.go @@ -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