diff --git a/agent/agent.go b/agent/agent.go index 863af7b59fbbb..52c423787fb44 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -236,7 +236,9 @@ func (a *agent) runLoop(ctx context.Context) { if err == nil { continue } - if errors.Is(err, context.Canceled) { + if ctx.Err() != nil { + // Context canceled errors may come from websocket pings, so we + // don't want to use `errors.Is(err, context.Canceled)` here. return } if a.isClosed() { diff --git a/codersdk/agentsdk/agentsdk.go b/codersdk/agentsdk/agentsdk.go index 7f66c01bc864b..e2189e1cc53d2 100644 --- a/codersdk/agentsdk/agentsdk.go +++ b/codersdk/agentsdk/agentsdk.go @@ -204,7 +204,7 @@ func (c *Client) DERPMapUpdates(ctx context.Context) (<-chan DERPMapUpdate, io.C defer close(updates) defer close(updatesClosed) defer cancelFunc() - defer conn.Close(websocket.StatusGoingAway, "Listen closed") + defer conn.Close(websocket.StatusGoingAway, "DERPMapUpdates closed") for { var update DERPMapUpdate err := dec.Decode(&update.DERPMap) @@ -240,7 +240,7 @@ func (c *Client) DERPMapUpdates(ctx context.Context) (<-chan DERPMapUpdate, io.C closeFunc: func() error { cancelFunc() <-pingClosed - _ = conn.Close(websocket.StatusGoingAway, "Listen closed") + _ = conn.Close(websocket.StatusGoingAway, "DERPMapUpdates closed") <-updatesClosed return nil },