From e3b1fc2ac060408b1c0ec61aa3215bc03ef18848 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko <adam.ierymenko@gmail.com> Date: Fri, 10 Mar 2017 19:52:08 -0800 Subject: [PATCH] Tweak WHOIS path for federation. --- node/Constants.hpp | 7 ++++++- node/Peer.hpp | 2 +- node/Switch.cpp | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/node/Constants.hpp b/node/Constants.hpp index 3bda3805b..c2961f122 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -202,7 +202,7 @@ /** * Maximum identity WHOIS retries (each attempt tries consulting a different peer) */ -#define ZT_MAX_WHOIS_RETRIES 3 +#define ZT_MAX_WHOIS_RETRIES 4 /** * Transmit queue entry timeout @@ -390,6 +390,11 @@ */ #define ZT_PEER_CREDEITIALS_CUTOFF_LIMIT 15 +/** + * WHOIS rate limit (we allow these to be pretty fast) + */ +#define ZT_PEER_WHOIS_RATE_LIMIT 50 + /** * General rate limit for other kinds of rate-limited packets (HELLO, credential request, etc.) both inbound and outbound */ diff --git a/node/Peer.hpp b/node/Peer.hpp index 783f48b8f..72040b1d0 100644 --- a/node/Peer.hpp +++ b/node/Peer.hpp @@ -370,7 +370,7 @@ public: */ inline bool rateGateInboundWhoisRequest(const uint64_t now) { - if ((now - _lastWhoisRequestReceived) >= ZT_PEER_GENERAL_RATE_LIMIT) { + if ((now - _lastWhoisRequestReceived) >= ZT_PEER_WHOIS_RATE_LIMIT) { _lastWhoisRequestReceived = now; return true; } diff --git a/node/Switch.cpp b/node/Switch.cpp index 0392aec10..85103aa59 100644 --- a/node/Switch.cpp +++ b/node/Switch.cpp @@ -688,9 +688,9 @@ unsigned long Switch::doTimerTasks(uint64_t now) _outstandingWhoisRequests.erase(*a); } else { r->lastSent = now; - r->peersConsulted[r->retries] = _sendWhoisRequest(*a,r->peersConsulted,r->retries); - ++r->retries; + r->peersConsulted[r->retries] = _sendWhoisRequest(*a,r->peersConsulted,(r->retries > 1) ? r->retries : 0); TRACE("WHOIS %s (retry %u)",a->toString().c_str(),r->retries); + ++r->retries; nextDelay = std::min(nextDelay,(unsigned long)ZT_WHOIS_RETRY_DELAY); } } else {