From f3cccc28c73155ae86b5c5d8177b7c2d83c4fe6a Mon Sep 17 00:00:00 2001 From: "Derrick J. Wippler" Date: Fri, 18 Dec 2020 14:23:02 -0600 Subject: [PATCH] Fixed race condition on peer shutdown --- peer_client.go | 7 +++++-- version | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/peer_client.go b/peer_client.go index faed58e5..a95c9964 100644 --- a/peer_client.go +++ b/peer_client.go @@ -239,13 +239,16 @@ func (c *PeerClient) getPeerRateLimitsBatch(ctx context.Context, r *RateLimitReq return nil, err } + // See NOTE above about RLock and wg.Add(1) + c.mutex.RLock() + if c.status == peerClosing { + return nil, &PeerErr{err: errors.New("already disconnecting")} + } req := request{request: r, resp: make(chan *response, 1)} // Enqueue the request to be sent c.queue <- &req - // See NOTE above about RLock and wg.Add(1) - c.mutex.RLock() c.wg.Add(1) defer func() { c.mutex.RUnlock() diff --git a/version b/version index 3c029ddf..d17f0653 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.0.0-rc.3 +1.0.0-rc.4