diff --git a/router/connection.go b/router/connection.go index 488f9a48..64b4ee04 100644 --- a/router/connection.go +++ b/router/connection.go @@ -345,6 +345,11 @@ func (conn *LocalConnection) handshake(acceptNewPeer bool) error { return fmt.Errorf("Found unknown remote name: %s at %s", name, conn.remoteTCPAddr) } } + if existingConn, found := conn.local.ConnectionTo(name); found { + if existingConn.Established() { + return fmt.Errorf("Already have connection to %s at %s", name, existingConn.RemoteTCPAddr()) + } + } uidStr, err := checkHandshakeStringField("UID", "", handshakeRecv) if err != nil {