From 6e6fcef0ba6cbf3768706b42845cec5a9e99499a Mon Sep 17 00:00:00 2001 From: cui Date: Tue, 14 Jul 2026 22:06:57 +0800 Subject: [PATCH] eth/protocols/eth: discard message before size check (#35289) - Move `msg.Discard` defer ahead of the max message size check in `handleMessage`. - Ensures oversized messages are released when the handler returns early. --- eth/protocols/eth/handler.go | 2 +- eth/protocols/snap/handler.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eth/protocols/eth/handler.go b/eth/protocols/eth/handler.go index 154b75130c..325ffa0738 100644 --- a/eth/protocols/eth/handler.go +++ b/eth/protocols/eth/handler.go @@ -224,10 +224,10 @@ func handleMessage(backend Backend, peer *Peer) error { if err != nil { return err } + defer msg.Discard() if msg.Size > maxMessageSize { return fmt.Errorf("%w: %v > %v", errMsgTooLarge, msg.Size, maxMessageSize) } - defer msg.Discard() var handlers map[uint64]msgHandler switch peer.version { diff --git a/eth/protocols/snap/handler.go b/eth/protocols/snap/handler.go index ff5564ca65..6c2ff6149f 100644 --- a/eth/protocols/snap/handler.go +++ b/eth/protocols/snap/handler.go @@ -160,10 +160,10 @@ func HandleMessage(backend Backend, peer *Peer) error { if err != nil { return err } + defer msg.Discard() if msg.Size > maxMessageSize { return fmt.Errorf("%w: %v > %v", errMsgTooLarge, msg.Size, maxMessageSize) } - defer msg.Discard() var handlers map[uint64]msgHandler switch peer.version {