소스 검색

Tweak WHOIS path for federation.

Adam Ierymenko 8 년 전
부모
커밋
e3b1fc2ac0
3개의 변경된 파일9개의 추가작업 그리고 4개의 파일을 삭제
  1. 6 1
      node/Constants.hpp
  2. 1 1
      node/Peer.hpp
  3. 2 2
      node/Switch.cpp

+ 6 - 1
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
  */

+ 1 - 1
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;
 		}

+ 2 - 2
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 {