diff --git a/libp2p/Session.cpp b/libp2p/Session.cpp index 3bff33490..e81192f00 100644 --- a/libp2p/Session.cpp +++ b/libp2p/Session.cpp @@ -159,13 +159,13 @@ bool Session::interpret(RLP const& _r) bi::address_v4 peerAddress(_r[i][0].toHash>().asArray()); auto ep = bi::tcp::endpoint(peerAddress, _r[i][1].toInt()); h512 id = _r[i][2].toHash(); - clogS(NetAllDetail) << "Checking: " << ep << "(" << id.abridged() << ")"; + clogS(NetAllDetail) << "Checking: " << ep << "(" << id.abridged() << ")" << isPrivateAddress(peerAddress) << m_id.abridged() << id.abridged() << isPrivateAddress(endpoint().address()) << m_server->m_incomingPeers.count(id) << id << m_server->m_incomingPeers.count(id); if (isPrivateAddress(peerAddress) && !m_server->m_netPrefs.localNetworking) goto CONTINUE; // check that it's not us or one we already know: - if (id && (m_server->m_id == id || (m_id == id && isPrivateAddress(endpoint().address())) || m_server->m_incomingPeers.count(id))) + if (!(m_id == id && isPrivateAddress(endpoint().address()) && (!m_server->m_incomingPeers.count(id) || isPrivateAddress(m_server->m_incomingPeers.at(id).first.address()))) && (!id || m_server->m_id == id || m_server->m_incomingPeers.count(id))) goto CONTINUE; // check that we're not already connected to addr: