From e8bbb221d36f1adf4116752990c0c4f17a9e5deb Mon Sep 17 00:00:00 2001 From: Sean Sullivan Date: Sat, 2 Mar 2024 16:10:39 -0800 Subject: [PATCH] removes extra upgrade aware proxy logging; returns tunneling connection close error --- .../apimachinery/pkg/util/proxy/upgradeaware.go | 16 ++-------------- .../tools/portforward/tunneling_connection.go | 9 +++++++-- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/staging/src/k8s.io/apimachinery/pkg/util/proxy/upgradeaware.go b/staging/src/k8s.io/apimachinery/pkg/util/proxy/upgradeaware.go index 1fdae735af5..8c30a366de9 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/proxy/upgradeaware.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/proxy/upgradeaware.go @@ -422,7 +422,7 @@ func (h *UpgradeAwareHandler) tryUpgrade(w http.ResponseWriter, req *http.Reques } else { writer = backendConn } - _, err := io.Copy(writer, &loggingReader{name: "client->backend", delegate: requestHijackedConn}) + _, err := io.Copy(writer, requestHijackedConn) if err != nil && !strings.Contains(err.Error(), "use of closed network connection") { klog.Errorf("Error proxying data from client to backend: %v", err) } @@ -436,7 +436,7 @@ func (h *UpgradeAwareHandler) tryUpgrade(w http.ResponseWriter, req *http.Reques } else { reader = backendConn } - _, err := io.Copy(requestHijackedConn, &loggingReader{name: "backend->client", delegate: reader}) + _, err := io.Copy(requestHijackedConn, reader) if err != nil && !strings.Contains(err.Error(), "use of closed network connection") { klog.Errorf("Error proxying data from backend to client: %v", err) } @@ -454,18 +454,6 @@ func (h *UpgradeAwareHandler) tryUpgrade(w http.ResponseWriter, req *http.Reques return true } -// loggingReader logs the bytes read from the "delegate" with a "name" prefix. -type loggingReader struct { - name string - delegate io.Reader -} - -func (l *loggingReader) Read(p []byte) (int, error) { - n, err := l.delegate.Read(p) - klog.V(8).Infof("%s: %d bytes, err=%v, bytes=% X", l.name, n, err, p[:n]) - return n, err -} - // FIXME: Taken from net/http/httputil/reverseproxy.go as singleJoiningSlash is not exported to be re-used. // See-also: https://github.com/golang/go/issues/44290 func singleJoiningSlash(a, b string) string { diff --git a/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection.go b/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection.go index 4c04531b64f..a9c9b18fd60 100644 --- a/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection.go +++ b/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection.go @@ -114,8 +114,13 @@ func (c *TunnelingConnection) Close() error { klog.V(7).Infof("%s: tunneling connection Close()...", c.name) // Signal other endpoint that websocket connection is closing; ignore error. normalCloseMsg := gwebsocket.FormatCloseMessage(gwebsocket.CloseNormalClosure, "") - c.conn.WriteControl(gwebsocket.CloseMessage, normalCloseMsg, time.Now().Add(time.Second)) //nolint:errcheck - err = c.conn.Close() + writeControlErr := c.conn.WriteControl(gwebsocket.CloseMessage, normalCloseMsg, time.Now().Add(time.Second)) + closeErr := c.conn.Close() + if closeErr != nil { + err = closeErr + } else if writeControlErr != nil { + err = writeControlErr + } }) return err }