diff --git a/make-mac.mk b/make-mac.mk index 7760a1868..f4eddb46c 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -20,7 +20,7 @@ ifeq ($(ZT_AUTO_UPDATE),1) endif # Uncomment to dump trace and log info to stdout (useful for debug/test) -DEFS+=-DZT_TRACE -DZT_LOG_STDOUT +#DEFS+=-DZT_TRACE -DZT_LOG_STDOUT # Uncomment for a release optimized universal binary build CFLAGS=-arch i386 -arch x86_64 -Wall -O4 -fstack-protector -pthread -mmacosx-version-min=10.6 -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS) diff --git a/node/Switch.cpp b/node/Switch.cpp index 6c7d0fc93..bf4f812d0 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -67,7 +67,7 @@ Switch::~Switch() void Switch::onRemotePacket(Demarc::Port localPort,const InetAddress &fromAddr,const Buffer<4096> &data) { try { - if (data.size() >= ZT_PROTO_MIN_FRAGMENT_LENGTH) { + if (data.size() > ZT_PROTO_MIN_FRAGMENT_LENGTH) { if (data[ZT_PACKET_FRAGMENT_IDX_FRAGMENT_INDICATOR] == ZT_PACKET_FRAGMENT_INDICATOR) _handleRemotePacketFragment(localPort,fromAddr,data); else if (data.size() >= ZT_PROTO_MIN_PACKET_LENGTH) diff --git a/node/Topology.hpp b/node/Topology.hpp index 4a6d711fc..c6347d0a3 100644 --- a/node/Topology.hpp +++ b/node/Topology.hpp @@ -259,14 +259,14 @@ public: inline void operator()(Topology &t,const SharedPtr &p) { - if (_supernodeAddresses.count(p->address())) - return; // skip supernodes - p->forgetDirectPaths(false); // false means don't forget 'fixed' paths e.g. supernodes - if (((_now - p->lastFrame()) < ZT_PEER_LINK_ACTIVITY_TIMEOUT)&&(_supernode)) { - TRACE("sending reset NOP to %s",p->address().toString().c_str()); - Packet outp(p->address(),_r->identity.address(),Packet::VERB_NOP); - outp.armor(p->key(),false); // no need to encrypt a NOP - _supernode->send(_r,outp.data(),outp.size(),_now); + if (!_supernodeAddresses.count(p->address())) { + p->forgetDirectPaths(false); // false means don't forget 'fixed' paths e.g. supernodes + if (((_now - p->lastFrame()) < ZT_PEER_LINK_ACTIVITY_TIMEOUT)&&(_supernode)) { + TRACE("sending reset NOP to %s",p->address().toString().c_str()); + Packet outp(p->address(),_r->identity.address(),Packet::VERB_NOP); + outp.armor(p->key(),false); // no need to encrypt a NOP + _supernode->send(_r,outp.data(),outp.size(),_now); + } } }