diff --git a/derp/derphttp/derphttp_client.go b/derp/derphttp/derphttp_client.go index 87f11eca6..0c523f07e 100644 --- a/derp/derphttp/derphttp_client.go +++ b/derp/derphttp/derphttp_client.go @@ -709,10 +709,19 @@ func (c *Client) RecvDetail() (m derp.ReceivedMessage, connGen int, err error) { m, err = client.Recv() if err != nil { c.closeForReconnect(client) + if c.isClosed() { + err = ErrClientClosed + } } return m, connGen, err } +func (c *Client) isClosed() bool { + c.mu.Lock() + defer c.mu.Unlock() + return c.closed +} + // Close closes the client. It will not automatically reconnect after // being closed. func (c *Client) Close() error {