diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-03-17 22:13:34 +0000 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2017-03-17 22:13:34 +0000 |
commit | cdc0eaec3add50e1424a0bcd9d054ec140c3540b (patch) | |
tree | 8a3e011be0855b2f3e34df6b6d583e41f0f822c4 | |
parent | a7cb738175cde9ba85143ae7076ba6b18bcc1c5b (diff) | |
download | infinitytier-cdc0eaec3add50e1424a0bcd9d054ec140c3540b.tar.gz infinitytier-cdc0eaec3add50e1424a0bcd9d054ec140c3540b.zip |
Fix attempt to WHOIS self.
-rwxr-xr-x | .gitignore | 1 | ||||
-rw-r--r-- | make-linux.mk | 2 | ||||
-rw-r--r-- | node/IncomingPacket.cpp | 6 | ||||
-rw-r--r-- | node/Switch.cpp | 7 | ||||
-rw-r--r-- | node/Topology.hpp | 20 |
5 files changed, 26 insertions, 10 deletions
@@ -10,6 +10,7 @@ .DS_Store .Apple* Thumbs.db +@eaDir # Windows build droppings /windows/ZeroTierOne.sdf diff --git a/make-linux.mk b/make-linux.mk index 528c41c4..17bcd158 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -54,7 +54,7 @@ ifeq ($(ZT_RULES_ENGINE_DEBUGGING),1) endif ifeq ($(ZT_DEBUG),1) -# DEFS+=-DZT_TRACE + DEFS+=-DZT_TRACE override CFLAGS+=-Wall -g -O -pthread $(INCLUDES) $(DEFS) override CXXFLAGS+=-Wall -g -O -std=c++11 -pthread $(INCLUDES) $(DEFS) override LDFLAGS+= diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index 2e4a0b8e..dc2c8aaf 100644 --- a/node/IncomingPacket.cpp +++ b/node/IncomingPacket.cpp @@ -477,7 +477,11 @@ bool IncomingPacket::_doOK(const RuntimeEnvironment *RR,const SharedPtr<Peer> &p } else ptr += 2; } - TRACE("%s(%s): OK(HELLO), version %u.%u.%u, latency %u, reported external address %s",source().toString().c_str(),_path->address().toString().c_str(),vMajor,vMinor,vRevision,latency,((externalSurfaceAddress) ? externalSurfaceAddress.toString().c_str() : "(none)")); +#ifdef ZT_TRACE + const std::string tmp1(source().toString()); + const std::string tmp2(_path->address().toString()); + TRACE("%s(%s): OK(HELLO), version %u.%u.%u, latency %u",tmp1.c_str(),tmp2.c_str(),vMajor,vMinor,vRevision,latency); +#endif if (!hops()) peer->addDirectLatencyMeasurment((unsigned int)latency); diff --git a/node/Switch.cpp b/node/Switch.cpp index 85103aa5..aab2e7ff 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -625,6 +625,13 @@ void Switch::send(Packet &packet,bool encrypt) void Switch::requestWhois(const Address &addr) { +#ifdef ZT_TRACE + if (addr == RR->identity.address()) { + fprintf(stderr,"FATAL BUG: Switch::requestWhois() caught attempt to WHOIS self" ZT_EOL_S); + abort(); + } +#endif + bool inserted = false; { Mutex::Lock _l(_outstandingWhoisRequests_m); diff --git a/node/Topology.hpp b/node/Topology.hpp index 37615b49..e21747c8 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -184,14 +184,7 @@ public: { Mutex::Lock _l(_upstreams_m); for(std::vector<World::Root>::const_iterator i(_planet.roots().begin());i!=_planet.roots().end();++i) { - std::vector<InetAddress> &ips = eps[i->identity.address()]; - for(std::vector<InetAddress>::const_iterator j(i->stableEndpoints.begin());j!=i->stableEndpoints.end();++j) { - if (std::find(ips.begin(),ips.end(),*j) == ips.end()) - ips.push_back(*j); - } - } - for(std::vector<World>::const_iterator m(_moons.begin());m!=_moons.end();++m) { - for(std::vector<World::Root>::const_iterator i(m->roots().begin());i!=m->roots().end();++i) { + if (i->identity != RR->identity) { std::vector<InetAddress> &ips = eps[i->identity.address()]; for(std::vector<InetAddress>::const_iterator j(i->stableEndpoints.begin());j!=i->stableEndpoints.end();++j) { if (std::find(ips.begin(),ips.end(),*j) == ips.end()) @@ -199,6 +192,17 @@ public: } } } + for(std::vector<World>::const_iterator m(_moons.begin());m!=_moons.end();++m) { + for(std::vector<World::Root>::const_iterator i(m->roots().begin());i!=m->roots().end();++i) { + if (i->identity != RR->identity) { + std::vector<InetAddress> &ips = eps[i->identity.address()]; + for(std::vector<InetAddress>::const_iterator j(i->stableEndpoints.begin());j!=i->stableEndpoints.end();++j) { + if (std::find(ips.begin(),ips.end(),*j) == ips.end()) + ips.push_back(*j); + } + } + } + } for(std::vector< std::pair<uint64_t,Address> >::const_iterator m(_moonSeeds.begin());m!=_moonSeeds.end();++m) eps[m->second]; } |