diff --git a/internal/view/container.go b/internal/view/container.go index 9b25a00f..8f47714d 100644 --- a/internal/view/container.go +++ b/internal/view/container.go @@ -3,6 +3,7 @@ package view import ( "errors" "fmt" + "net" "strings" "github.com/derailed/k9s/internal/client" @@ -157,6 +158,12 @@ func (c *Container) preparePort(pp []string) string { } func (c *Container) portForward(address, lport, cport string) { + err := tryListenPort(lport) + if err != nil { + c.App().Flash().Err(err) + return + } + co := c.GetTable().GetSelectedCell(0) pf := dao.NewPortForwarder(c.App().Conn()) ports := []string{lport + ":" + cport} @@ -187,3 +194,11 @@ func (c *Container) runForward(pf *dao.PortForwarder, f *portforward.PortForward pf.SetActive(false) }) } + +func tryListenPort(port string) error { + server, err := net.Listen("tcp", fmt.Sprintf(":%s", port)) + if err != nil { + return err + } + return server.Close() +}