From f9aa1cd21f776a4d3267d9c89772bdc622468d6d Mon Sep 17 00:00:00 2001
From: Anton Evangelatov <anton.evangelatov@gmail.com>
Date: Sat, 2 Mar 2019 08:45:07 +0100
Subject: [PATCH] Revert "swarm/network: Use actual remote peer ip in underlay
 (#19137)" (#19193)

This reverts commit 460d206f309fc0884c666bd191a1b6a4b63462fc.
---
 swarm/network/protocol.go      | 21 +--------------------
 swarm/network/protocol_test.go | 26 --------------------------
 2 files changed, 1 insertion(+), 46 deletions(-)

diff --git a/swarm/network/protocol.go b/swarm/network/protocol.go
index ba2a7e5fa..6f8eadad2 100644
--- a/swarm/network/protocol.go
+++ b/swarm/network/protocol.go
@@ -21,7 +21,6 @@ import (
 	"errors"
 	"fmt"
 	"net"
-	"regexp"
 	"sync"
 	"time"
 
@@ -40,8 +39,6 @@ const (
 	bzzHandshakeTimeout = 3000 * time.Millisecond
 )
 
-var regexpEnodeIP = regexp.MustCompile("@(.+):([0-9]+)")
-
 // BzzSpec is the spec of the generic swarm handshake
 var BzzSpec = &protocols.Spec{
 	Name:       "bzz",
@@ -217,26 +214,10 @@ func (b *Bzz) performHandshake(p *protocols.Peer, handshake *HandshakeMsg) error
 		return err
 	}
 	handshake.peerAddr = rsh.(*HandshakeMsg).Addr
-	sanitizeEnodeRemote(p.RemoteAddr(), handshake.peerAddr)
 	handshake.LightNode = rsh.(*HandshakeMsg).LightNode
 	return nil
 }
 
-// the remote enode string may advertise arbitrary host information (e.g. localhost)
-// this method ensures that the addr of the peer will be the one
-// applicable on the interface the connection came in on
-// it modifies the passed bzzaddr in place, and returns the same pointer
-func sanitizeEnodeRemote(paddr net.Addr, baddr *BzzAddr) {
-	hsSubmatch := regexpEnodeIP.FindSubmatch(baddr.UAddr)
-	ip, _, err := net.SplitHostPort(paddr.String())
-	// since we expect nothing else than ipv4 here, a panic on missing submatch is desired
-	if err == nil && string(hsSubmatch[1]) != ip {
-		remoteStr := fmt.Sprintf("@%s:%s", ip, string(hsSubmatch[2]))
-		log.Debug("rewrote peer uaddr host/port", "addr", baddr)
-		baddr.UAddr = regexpEnodeIP.ReplaceAll(baddr.UAddr, []byte(remoteStr))
-	}
-}
-
 // runBzz is the p2p protocol run function for the bzz base protocol
 // that negotiates the bzz handshake
 func (b *Bzz) runBzz(p *p2p.Peer, rw p2p.MsgReadWriter) error {
@@ -343,7 +324,7 @@ func (b *Bzz) GetOrCreateHandshake(peerID enode.ID) (*HandshakeMsg, bool) {
 			init:      make(chan bool, 1),
 			done:      make(chan struct{}),
 		}
-		// when handshake is first created for a remote peer
+		// when handhsake is first created for a remote peer
 		// it is initialised with the init
 		handshake.init <- true
 		b.handshakes[peerID] = handshake
diff --git a/swarm/network/protocol_test.go b/swarm/network/protocol_test.go
index 97cb4b97b..64ce7ba4a 100644
--- a/swarm/network/protocol_test.go
+++ b/swarm/network/protocol_test.go
@@ -17,15 +17,12 @@
 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"
@@ -254,26 +251,3 @@ 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))
-	}
-}
-- 
GitLab