derp/derphttp: return nicer errors from Recv on Close
@@ -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 {
