From 6acec35f355646eeb98303038304715209505b47 Mon Sep 17 00:00:00 2001
From: capossele <angelocapossele@gmail.com>
Date: Tue, 17 Dec 2019 20:28:24 +0000
Subject: [PATCH] :art: adds pubIP to the transport

---
 packages/gossip/transport/handshake.go | 2 +-
 packages/gossip/transport/transport.go | 8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/packages/gossip/transport/handshake.go b/packages/gossip/transport/handshake.go
index e5e928c4..2be73aab 100644
--- a/packages/gossip/transport/handshake.go
+++ b/packages/gossip/transport/handshake.go
@@ -56,7 +56,7 @@ func (t *TCP) validateHandshakeRequest(reqData []byte, fromAddr string) bool {
 		)
 		return false
 	}
-	if m.GetTo() != t.LocalAddr().String() {
+	if m.GetTo() != t.pubIP {
 		t.log.Debugw("invalid handshake",
 			"to", m.GetTo(),
 		)
diff --git a/packages/gossip/transport/transport.go b/packages/gossip/transport/transport.go
index a948dd23..83fd6edd 100644
--- a/packages/gossip/transport/transport.go
+++ b/packages/gossip/transport/transport.go
@@ -41,6 +41,7 @@ const (
 // TCP establishes verified incoming and outgoing TCP connections to other peers.
 type TCP struct {
 	local    *peer.Local
+	pubIP    string
 	listener *net.TCPListener
 	log      *zap.SugaredLogger
 
@@ -85,6 +86,8 @@ func Listen(local *peer.Local, log *zap.SugaredLogger) (*TCP, error) {
 		return nil, ErrNoGossip
 	}
 
+	t.pubIP = gossipAddr.String()
+
 	host, port, _ := net.SplitHostPort(gossipAddr.String())
 	if host != "127.0.0.1" {
 		host = "0.0.0.0"
@@ -300,7 +303,10 @@ func (t *TCP) listenLoop() {
 }
 
 func (t *TCP) doHandshake(key peer.PublicKey, remoteAddr string, conn net.Conn) error {
-	reqData, err := newHandshakeRequest(conn.LocalAddr().String(), remoteAddr)
+	_, connPort, _ := net.SplitHostPort(conn.LocalAddr().String())
+	from, _, _ := net.SplitHostPort(t.pubIP)
+
+	reqData, err := newHandshakeRequest(from+":"+connPort, remoteAddr)
 	if err != nil {
 		return err
 	}
-- 
GitLab