Forráskód Böngészése

Add some debug code in TRACE mode to catch a bug.

Adam Ierymenko 9 éve
szülő
commit
d8dbbf7484
2 módosított fájl, 16 hozzáadás és 7 törlés
  1. 7 5
      node/Topology.cpp
  2. 9 2
      node/Topology.hpp

+ 7 - 5
node/Topology.cpp

@@ -120,10 +120,12 @@ Topology::~Topology()
 
 SharedPtr<Peer> Topology::addPeer(const SharedPtr<Peer> &peer)
 {
-	if (peer->address() == RR->identity.address()) {
-		TRACE("BUG: addPeer() caught and ignored attempt to add peer for self");
-		throw std::logic_error("cannot add peer for self");
+#ifdef ZT_TRACE
+	if ((!peer)||(peer->address() == RR->identity.address())) {
+		TRACE("BUG: addPeer() caught and ignored attempt to add peer for self or add a NULL peer");
+		abort();
 	}
+#endif
 
 	SharedPtr<Peer> np;
 	{
@@ -133,6 +135,7 @@ SharedPtr<Peer> Topology::addPeer(const SharedPtr<Peer> &peer)
 			hp = peer;
 		np = hp;
 	}
+
 	np->use(RR->node->now());
 	saveIdentity(np->identity());
 
@@ -321,8 +324,7 @@ unsigned long Topology::countActive() const
 	Address *a = (Address *)0;
 	SharedPtr<Peer> *p = (SharedPtr<Peer> *)0;
 	while (i.next(a,p)) {
-		if ((*p)->hasActiveDirectPath(now))
-			++cnt;
+		cnt += (unsigned long)((*p)->hasActiveDirectPath(now));
 	}
 	return cnt;
 }

+ 9 - 2
node/Topology.hpp

@@ -234,8 +234,15 @@ public:
 		Hashtable< Address,SharedPtr<Peer> >::Iterator i(_peers);
 		Address *a = (Address *)0;
 		SharedPtr<Peer> *p = (SharedPtr<Peer> *)0;
-		while (i.next(a,p))
-			f(*this,*p);
+		while (i.next(a,p)) {
+#ifdef ZT_TRACE
+			if (!(*p)) {
+				ZT_TRACE("eachPeer() caught NULL peer for %s",a->toString().c_str());
+				abort();
+			}
+#endif
+			f(*this,*((const SharedPtr<Peer> *)p));
+		}
 	}
 
 	/**