From ed51979bb848462c0f243fca3ea63d9cde9f8451 Mon Sep 17 00:00:00 2001 From: shingle Date: Thu, 6 Jun 2024 18:22:15 +0800 Subject: [PATCH] fix panic --- rpc/ws/client.go | 4 +++- rpc/ws/subscription.go | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rpc/ws/client.go b/rpc/ws/client.go index 261b4532..2c951ce1 100644 --- a/rpc/ws/client.go +++ b/rpc/ws/client.go @@ -246,7 +246,9 @@ func (c *Client) handleSubscriptionMessage(subID uint64, message []byte) { return } - sub.stream <- result + if !sub.closed { + sub.stream <- result + } return } diff --git a/rpc/ws/subscription.go b/rpc/ws/subscription.go index c209cdaf..d2a16a18 100644 --- a/rpc/ws/subscription.go +++ b/rpc/ws/subscription.go @@ -23,6 +23,7 @@ type Subscription struct { stream chan result err chan error closeFunc func(err error) + closed bool unsubscribeMethod string decoderFunc decoderFunc } @@ -61,6 +62,7 @@ func (s *Subscription) Unsubscribe() { func (s *Subscription) unsubscribe(err error) { s.closeFunc(err) + s.closed = true close(s.stream) close(s.err) }