diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-31 11:36:13 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-31 11:36:13 -0800 |
commit | 9f28eec95cf26a52ad1bb637d91339694c23f9e6 (patch) | |
tree | 0904424e34fba4f629197a9ca8a9ad3e9e740062 | |
parent | 17126b0c6d3ffe0e205c3bfdca778cba272ed6b0 (diff) | |
download | infinitytier-9f28eec95cf26a52ad1bb637d91339694c23f9e6.tar.gz infinitytier-9f28eec95cf26a52ad1bb637d91339694c23f9e6.zip |
VERSION 0.6.7: revert change for GitHub issue #20
This will have to be thought out more. The old version worked fine 99% of the
time so we'll revisit this.
-rw-r--r-- | node/Peer.cpp | 19 | ||||
-rw-r--r-- | version.h | 2 |
2 files changed, 4 insertions, 17 deletions
diff --git a/node/Peer.cpp b/node/Peer.cpp index 106b4350..5a59031d 100644 --- a/node/Peer.cpp +++ b/node/Peer.cpp @@ -87,32 +87,19 @@ void Peer::onReceive( WanPath *const wp = (remoteAddr.isV4() ? &_ipv4p : &_ipv6p); wp->lastReceive = now; wp->localPort = ((localPort) ? localPort : Demarc::ANY_PORT); + if (!wp->fixed) + wp->addr = remoteAddr; - // Do things like learn latency or endpoints on OK or ERROR replies + // Learn latency from replies if (inReVerb != Packet::VERB_NOP) { for(unsigned int p=0;p<ZT_PEER_REQUEST_HISTORY_LENGTH;++p) { if ((_requestHistory[p].timestamp)&&(_requestHistory[p].packetId == inRePacketId)&&(_requestHistory[p].verb == inReVerb)) { _latency = std::min((unsigned int)(now - _requestHistory[p].timestamp),(unsigned int)0xffff); - - // Only learn paths on replies to packets we have sent, otherwise - // this introduces both an asymmetry problem in NAT-t and a potential - // reply DOS attack. - if (!wp->fixed) { - wp->addr = remoteAddr; - TRACE("peer %s learned endpoint %s from %s(%s)",address().toString().c_str(),remoteAddr.toString().c_str(),Packet::verbString(verb),Packet::verbString(inReVerb)); - } - _requestHistory[p].timestamp = 0; break; } } } - - // If we get a valid packet with a different address that is not a response - // to a request, send a PROBE to authenticate this endpoint and determine if - // it is reachable. - if ((!wp->fixed)&&(wp->addr != remoteAddr)) - _r->sw->sendPROBE(SharedPtr<Peer>(this),localPort,remoteAddr); } if (verb == Packet::VERB_FRAME) { @@ -41,6 +41,6 @@ /** * Revision */ -#define ZEROTIER_ONE_VERSION_REVISION 6 +#define ZEROTIER_ONE_VERSION_REVISION 7 #endif |