summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-31 11:36:13 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-31 11:36:13 -0800
commit9f28eec95cf26a52ad1bb637d91339694c23f9e6 (patch)
tree0904424e34fba4f629197a9ca8a9ad3e9e740062
parent17126b0c6d3ffe0e205c3bfdca778cba272ed6b0 (diff)
downloadinfinitytier-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.cpp19
-rw-r--r--version.h2
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) {
diff --git a/version.h b/version.h
index bd2543e6..93fb165e 100644
--- a/version.h
+++ b/version.h
@@ -41,6 +41,6 @@
/**
* Revision
*/
-#define ZEROTIER_ONE_VERSION_REVISION 6
+#define ZEROTIER_ONE_VERSION_REVISION 7
#endif