diff --git a/pkg/rpcclient/wsclient.go b/pkg/rpcclient/wsclient.go index dc877c407..38a1d4527 100644 --- a/pkg/rpcclient/wsclient.go +++ b/pkg/rpcclient/wsclient.go @@ -601,7 +601,15 @@ readloop: connCloseErr = fmt.Errorf("unknown response channel for response %d", id) break readloop // Unknown response (unexpected response ID). } - ch <- &rr.Response + select { + case <-c.writerDone: + connCloseErr = fmt.Errorf("response won't be sent to channel %d: ws-writer is done", id) + break readloop + case <-c.shutdown: + connCloseErr = fmt.Errorf("response won't be sent to channel %d: shutting down", id) + break readloop + case ch <- &rr.Response: + } } else { // Malformed response, neither valid request, nor valid response. connCloseErr = fmt.Errorf("malformed response")