From 82e82eb4bfc1573f822c3033acadf4012fdfd84d Mon Sep 17 00:00:00 2001 From: lorenzo <31852651+lorenzo-dev1@users.noreply.github.com> Date: Thu, 5 Dec 2024 16:05:15 +0100 Subject: [PATCH] p2p: revert reason decoding back to using array --- p2p/peer.go | 6 +++--- p2p/peer_test.go | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/p2p/peer.go b/p2p/peer.go index c3834965cc..4908865338 100644 --- a/p2p/peer.go +++ b/p2p/peer.go @@ -343,11 +343,11 @@ func (p *Peer) handle(msg Msg) error { case <-p.closed: } case msg.Code == discMsg: + var reason [1]DiscReason // This is the last message. We don't need to discard or // check errors because, the connection will be closed after it. - var m struct{ R DiscReason } - rlp.Decode(msg.Payload, &m) - return m.R + rlp.Decode(msg.Payload, &reason) + return reason[0] case msg.Code < baseProtocolLength: // ignore other base protocol messages return msg.Discard() diff --git a/p2p/peer_test.go b/p2p/peer_test.go index 4308bbd2eb..6dcb3fdd7a 100644 --- a/p2p/peer_test.go +++ b/p2p/peer_test.go @@ -17,9 +17,12 @@ package p2p import ( + "bytes" "encoding/binary" "errors" "fmt" + "github.com/autonity/autonity/rlp" + "github.com/stretchr/testify/require" "math/rand" "net" "reflect" @@ -360,3 +363,15 @@ func TestMatchProtocols(t *testing.T) { } } } + +func TestDiscReasonDecoding(t *testing.T) { + // as it is encoded func (t *rlpxTransport) close(err error) in transport.go + var payload bytes.Buffer + err := rlp.Encode(&payload, []DiscReason{DiscQuitting}) + require.NoError(t, err) + + p := &Peer{} + err = p.handle(Msg{Code: discMsg, Payload: bytes.NewReader(payload.Bytes())}) + t.Log(err) + require.True(t, errors.Is(err, DiscQuitting)) +}