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