summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-07-27 16:43:05 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-07-27 16:43:27 -0700
commite30ba3e1382b50aa8f393132204f8f27ccfb03f9 (patch)
treefb05ea2f96483addf578328a06c025e76f370b06 /node
parent7a15d8a7e3fb4934200887666afdf17afb1178e5 (diff)
downloadinfinitytier-e30ba3e1382b50aa8f393132204f8f27ccfb03f9.tar.gz
infinitytier-e30ba3e1382b50aa8f393132204f8f27ccfb03f9.zip
Eliminate some aggressive port scanning NAT-t behavior that has proven ineffective.
Diffstat (limited to 'node')
-rw-r--r--node/Switch.cpp15
1 files changed, 3 insertions, 12 deletions
diff --git a/node/Switch.cpp b/node/Switch.cpp
index cf4fe249..3d9ef5b1 100644
--- a/node/Switch.cpp
+++ b/node/Switch.cpp
@@ -451,7 +451,7 @@ unsigned long Switch::doTimerTasks(uint64_t now)
{
unsigned long nextDelay = 0xffffffff; // ceiling delay, caller will cap to minimum
- { // Aggressive NAT traversal time!
+ {
Mutex::Lock _l(_contactQueue_m);
for(std::list<ContactQueueEntry>::iterator qi(_contactQueue.begin());qi!=_contactQueue.end();) {
if (now >= qi->fireAtTime) {
@@ -460,26 +460,17 @@ unsigned long Switch::doTimerTasks(uint64_t now)
_contactQueue.erase(qi++);
continue;
} else {
- // Nope, nothing yet. Time to kill some kittens.
if (qi->strategyIteration == 0) {
// First strategy: send packet directly (we already tried this but try again)
qi->peer->attemptToContactAt(RR,qi->inaddr,now);
- } else if (qi->strategyIteration <= 9) {
- // Strategies 1-9: try escalating ports
+ } else if (qi->strategyIteration <= 4) {
+ // Strategies 1-4: try escalating ports
InetAddress tmpaddr(qi->inaddr);
int p = (int)qi->inaddr.port() + qi->strategyIteration;
if (p < 0xffff) {
tmpaddr.setPort((unsigned int)p);
qi->peer->attemptToContactAt(RR,tmpaddr,now);
} else qi->strategyIteration = 9;
- } else if (qi->strategyIteration <= 18) {
- // Strategies 10-18: try ports below
- InetAddress tmpaddr(qi->inaddr);
- int p = (int)qi->inaddr.port() - (qi->strategyIteration - 9);
- if (p >= 1024) {
- tmpaddr.setPort((unsigned int)p);
- qi->peer->attemptToContactAt(RR,tmpaddr,now);
- } else qi->strategyIteration = 18;
} else {
// All strategies tried, expire entry
_contactQueue.erase(qi++);