From e5cadf1f25d92132276a63f434bb83cd0e047ca5 Mon Sep 17 00:00:00 2001 From: Fernand Galiana Date: Fri, 19 Jan 2024 08:57:56 -0700 Subject: [PATCH] [Bug] Fix #2486 (#2494) --- internal/dao/port_forwarder.go | 9 +++++++-- internal/view/pf_extender.go | 4 +--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/dao/port_forwarder.go b/internal/dao/port_forwarder.go index 19382e58..97043ff1 100644 --- a/internal/dao/port_forwarder.go +++ b/internal/dao/port_forwarder.go @@ -24,6 +24,8 @@ import ( "k8s.io/client-go/transport/spdy" ) +const defaultTimeout = 30 * time.Second + // PortForwarder tracks a port forward stream. type PortForwarder struct { Factory @@ -94,7 +96,10 @@ func (p *PortForwarder) Container() string { func (p *PortForwarder) Stop() { log.Debug().Msgf("<<< Stopping PortForward %s", p.ID()) p.active = false - close(p.stopChan) + if p.stopChan != nil { + close(p.stopChan) + p.stopChan = nil + } } // FQN returns the portforward unique id. @@ -169,7 +174,7 @@ func (p *PortForwarder) forwardPorts(method string, url *url.URL, addr, portMap if err != nil { return nil, err } - dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, method, url) + dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport, Timeout: defaultTimeout}, method, url) return portforward.NewOnAddresses(dialer, []string{addr}, []string{portMap}, p.stopChan, p.readyChan, p.Out, p.ErrOut) } diff --git a/internal/view/pf_extender.go b/internal/view/pf_extender.go index 0f5710b7..7a5506be 100644 --- a/internal/view/pf_extender.go +++ b/internal/view/pf_extender.go @@ -99,11 +99,9 @@ func runForward(v ResourceViewer, pf watch.Forwarder, f *portforward.PortForward pf.SetActive(true) if err := f.ForwardPorts(); err != nil { v.App().Flash().Err(err) - return } - v.App().QueueUpdateDraw(func() { - v.App().factory.DeleteForwarder(pf.FQN()) + v.App().factory.DeleteForwarder(pf.ID()) pf.SetActive(false) }) }