From 79663c8c62b995a6b9201eea6fac37d0e578c04d Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 13 Sep 2021 18:13:44 +0200 Subject: [PATCH 1/3] cmd/devp2p/internal/ethtest: only use eth66 if eth66 is negotiated --- cmd/devp2p/internal/ethtest/helpers.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go index 6f7365483a5c0..5be99a1a17fa0 100644 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ b/cmd/devp2p/internal/ethtest/helpers.go @@ -242,9 +242,17 @@ func (s *Suite) createSendAndRecvConns(isEth66 bool) (*Conn, *Conn, error) { return sendConn, recvConn, nil } +func (c *Conn) readAndServe(chain *Chain, timeout time.Duration) Message { + if c.negotiatedProtoVersion == 66 { + _, msg := c.readAndServe66(chain, timeout) + return msg + } + return c.readAndServe65(chain, timeout) +} + // readAndServe serves GetBlockHeaders requests while waiting // on another message from the node. -func (c *Conn) readAndServe(chain *Chain, timeout time.Duration) Message { +func (c *Conn) readAndServe65(chain *Chain, timeout time.Duration) Message { start := time.Now() for time.Since(start) < timeout { c.SetReadDeadline(time.Now().Add(5 * time.Second)) From 830fa2ce0392c4add93f4dc50a61f07e56fab135 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 13 Sep 2021 18:55:58 +0200 Subject: [PATCH 2/3] cmd/devp2p/internal/ethtest: switch on concrete type not pointer --- cmd/devp2p/internal/ethtest/helpers.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go index 5be99a1a17fa0..c5e380bfa7094 100644 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ b/cmd/devp2p/internal/ethtest/helpers.go @@ -257,11 +257,10 @@ func (c *Conn) readAndServe65(chain *Chain, timeout time.Duration) Message { for time.Since(start) < timeout { c.SetReadDeadline(time.Now().Add(5 * time.Second)) switch msg := c.Read().(type) { - case *Ping: + case Ping: c.Write(&Pong{}) - case *GetBlockHeaders: - req := *msg - headers, err := chain.GetHeaders(req) + case GetBlockHeaders: + headers, err := chain.GetHeaders(msg) if err != nil { return errorf("could not get headers for inbound header request: %v", err) } From 3f4d9878746a4ac5be98e162e2af6b2d2f03e1ef Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 13 Sep 2021 21:07:01 +0200 Subject: [PATCH 3/3] cmd/devp2p/internal/ethtest: switch on concrete type not pointer --- cmd/devp2p/internal/ethtest/helpers.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go index c5e380bfa7094..88d8e143c1f2e 100644 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ b/cmd/devp2p/internal/ethtest/helpers.go @@ -257,10 +257,11 @@ func (c *Conn) readAndServe65(chain *Chain, timeout time.Duration) Message { for time.Since(start) < timeout { c.SetReadDeadline(time.Now().Add(5 * time.Second)) switch msg := c.Read().(type) { - case Ping: + case *Ping: c.Write(&Pong{}) - case GetBlockHeaders: - headers, err := chain.GetHeaders(msg) + case *GetBlockHeaders: + req := *msg + headers, err := chain.GetHeaders(req) if err != nil { return errorf("could not get headers for inbound header request: %v", err) } @@ -286,8 +287,8 @@ func (c *Conn) readAndServe66(chain *Chain, timeout time.Duration) (uint64, Mess switch msg := msg.(type) { case *Ping: c.Write(&Pong{}) - case *GetBlockHeaders: - headers, err := chain.GetHeaders(*msg) + case GetBlockHeaders: + headers, err := chain.GetHeaders(msg) if err != nil { return 0, errorf("could not get headers for inbound header request: %v", err) }