diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-07-27 16:43:05 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-07-27 16:43:27 -0700 |
commit | e30ba3e1382b50aa8f393132204f8f27ccfb03f9 (patch) | |
tree | fb05ea2f96483addf578328a06c025e76f370b06 /node | |
parent | 7a15d8a7e3fb4934200887666afdf17afb1178e5 (diff) | |
download | infinitytier-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.cpp | 15 |
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++); |