From 5311a890facc1b24e1868fa33e4a3523d1a52dc2 Mon Sep 17 00:00:00 2001 From: Daniel Liu <139250065@qq.com> Date: Fri, 22 Aug 2025 16:47:37 +0800 Subject: [PATCH] ethclient: ensure returned subscription is nil on error #26976 (#1376) Co-authored-by: norwnd <112318969+norwnd@users.noreply.github.com> --- ethclient/ethclient.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index f29be08bda..c7ebf11d13 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -343,7 +343,14 @@ func (ec *Client) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, err // SubscribeNewHead subscribes to notifications about the current blockchain head // on the given channel. func (ec *Client) SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) (ethereum.Subscription, error) { - return ec.c.EthSubscribe(ctx, ch, "newHeads") + sub, err := ec.c.EthSubscribe(ctx, ch, "newHeads") + if err != nil { + // Defensively prefer returning nil interface explicitly on error-path, instead + // of letting default golang behavior wrap it with non-nil interface that stores + // nil concrete type value. + return nil, err + } + return sub, nil } // State Access