From 5d499d35409f5b52712a4da9852a064d882daf75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=97=B6=E5=B0=8F=E5=85=89?= Date: Wed, 26 Jun 2024 21:31:23 +0800 Subject: [PATCH] fix panic (#218) --- 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 c635be1b..757ca1a7 100644 --- a/rpc/ws/client.go +++ b/rpc/ws/client.go @@ -249,7 +249,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) }