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:
@ -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))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user