Close websocket heartbeat explicitly when unexpected closure received

Kubernetes-commit: e1ae906048003145441fb1d4ecce4c13acf5cb19
This commit is contained in:
Arda Güçlü 2023-10-03 12:05:26 +03:00 committed by Kubernetes Publisher
parent 0a782d6adb
commit e95d92dbc6

View File

@ -18,8 +18,10 @@ package remotecommand
import (
"context"
"errors"
"fmt"
"io"
"net"
"net/http"
"sync"
"time"
@ -476,9 +478,15 @@ func (h *heartbeat) start() {
klog.V(8).Infof("Websocket Ping succeeeded")
} else {
klog.Errorf("Websocket Ping failed: %v", err)
// Continue, in case this is a transient failure.
// c.conn.CloseChan above will tell us when the connection is
// actually closed.
if errors.Is(err, gwebsocket.ErrCloseSent) {
continue
} else if e, ok := err.(net.Error); ok && e.Temporary() {
// Continue, in case this is a transient failure.
// c.conn.CloseChan above will tell us when the connection is
// actually closed.
continue
}
return
}
}
}