swarm/network: Use actual remote peer ip in underlay (#19137)

* swarm/network: Logline to see handshake addr

* swarm/network: Replace remote ip in handshake uaddr

* swarm/network: Add test for enode uaddr rewrite method

* swarm/network: Remove redundance pointer return from sanitize

* swarm/network: Obeying the linting machine

* swarm/network: Add panic comment

(travis trigger take 1)
This commit is contained in:
lash
2019-02-20 14:46:00 +01:00
committed by Viktor Trón
parent ba2dfa5ce4
commit 460d206f30
2 changed files with 46 additions and 1 deletions

View File

@ -17,12 +17,15 @@
package network
import (
"bytes"
"flag"
"fmt"
"net"
"os"
"testing"
"time"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/enode"
@ -251,3 +254,26 @@ func TestBzzHandshakeLightNode(t *testing.T) {
})
}
}
// Tests the overwriting of localhost enode in handshake if actual remote ip is known
// (swarm.network/protocol.go:sanitizeEnodeRemote)
func TestSanitizeEnodeRemote(t *testing.T) {
pk, err := crypto.GenerateKey()
if err != nil {
t.Fatal(err)
}
remoteIP := net.IPv4(0x80, 0x40, 0x20, 0x10)
remoteAddr := net.TCPAddr{
IP: remoteIP,
Port: 30399,
}
nodLocal := enode.NewV4(&pk.PublicKey, net.IPv4(0x7f, 0x00, 0x00, 0x01), 30341, 30341)
nodRemote := enode.NewV4(&pk.PublicKey, remoteIP, 30341, 30341)
baddr := RandomAddr()
oldUAddr := []byte(nodLocal.String())
baddr.UAddr = oldUAddr
sanitizeEnodeRemote(&remoteAddr, baddr)
if !bytes.Equal(baddr.UAddr, []byte(nodRemote.String())) {
t.Fatalf("insane address. expected %v, got %v", nodRemote.String(), string(baddr.UAddr))
}
}