diff --git a/p2p/message.go b/p2p/message.go index 3ab56ee35018..9cc6fac70bb6 100644 --- a/p2p/message.go +++ b/p2p/message.go @@ -25,6 +25,7 @@ import ( "time" "github.com/ethereum/go-ethereum/event" + "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/rlp" ) @@ -64,9 +65,11 @@ func (msg Msg) String() string { } // Discard reads any remaining payload data into a black hole. -func (msg Msg) Discard() error { +func (msg Msg) Discard() { _, err := io.Copy(io.Discard, msg.Payload) - return err + if err != nil { + log.Error("[p2p] discard msg", "code", msg.Code, "size", msg.Size, "err", err) + } } func (msg Msg) Time() time.Time { @@ -233,7 +236,8 @@ func ExpectMsg(r MsgReader, code uint64, content interface{}) error { return fmt.Errorf("message code mismatch: got %d, expected %d", msg.Code, code) } if content == nil { - return msg.Discard() + msg.Discard() + return nil } contentEnc, err := rlp.EncodeToBytes(content) if err != nil { diff --git a/p2p/peer.go b/p2p/peer.go index 5521889f30d0..a4978e40af32 100644 --- a/p2p/peer.go +++ b/p2p/peer.go @@ -379,7 +379,8 @@ func (p *Peer) handle(msg Msg) error { return decodeDisconnectMessage(msg.Payload) case msg.Code < baseProtocolLength: // ignore other base protocol messages - return msg.Discard() + msg.Discard() + return nil default: // it's a subprotocol message proto, err := p.getProto(msg.Code) diff --git a/p2p/peer_test.go b/p2p/peer_test.go index dea72875fe73..d8955fad9096 100644 --- a/p2p/peer_test.go +++ b/p2p/peer_test.go @@ -43,9 +43,7 @@ var discard = Protocol{ return err } fmt.Printf("discarding %d\n", msg.Code) - if err = msg.Discard(); err != nil { - return err - } + msg.Discard() } }, }