diff --git a/packages/gossip/transport/handshake.go b/packages/gossip/transport/handshake.go index e5e928c4e2ca079fbc6dbc61cd82e43f8c27bce1..2be73aaba04ad1facaceb1e178cc60dd1c382f45 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 a948dd231688822003f91ef377a3b49b5c00c7a8..83fd6eddc2ba39f54c2f58915c0d0ea281088e89 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 }