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

This commit is contained in:
Adam Ierymenko 2015-10-30 14:11:10 -07:00
parent 377ccff600
commit d8dbbf7484
2 changed files with 16 additions and 7 deletions

View File

@ -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;
}

View File

@ -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));
}
}
/**