diff --git a/rpc/client.go b/rpc/client.go index d4d74c889d..8ef20fb3cc 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -41,7 +41,8 @@ var ( const ( // Timeouts defaultDialTimeout = 10 * time.Second // used if context has no deadline - subscribeTimeout = 5 * time.Second // overall timeout ctxc_subscribe, rpc_modules calls + subscribeTimeout = 10 * time.Second // overall timeout eth_subscribe, rpc_modules calls + unsubscribeTimeout = 10 * time.Second // timeout for *_unsubscribe calls ) const ( diff --git a/rpc/subscription.go b/rpc/subscription.go index f0a747f6e2..c98f055af1 100644 --- a/rpc/subscription.go +++ b/rpc/subscription.go @@ -376,6 +376,9 @@ func (sub *ClientSubscription) unmarshal(result json.RawMessage) (any, error) { } func (sub *ClientSubscription) requestUnsubscribe() error { - var result any - return sub.client.Call(&result, sub.namespace+unsubscribeMethodSuffix, sub.subid) + var result interface{} + ctx, cancel := context.WithTimeout(context.Background(), unsubscribeTimeout) + defer cancel() + err := sub.client.CallContext(ctx, &result, sub.namespace+unsubscribeMethodSuffix, sub.subid) + return err }