浏览代码

Clusters can send multiple OKs so we must allow this.

Adam Ierymenko 9 年之前
父节点
当前提交
0b44919ba2
共有 2 个文件被更改,包括 6 次插入7 次删除
  1. 3 2
      node/IncomingPacket.cpp
  2. 3 5
      node/Node.hpp

+ 3 - 2
node/IncomingPacket.cpp

@@ -1481,14 +1481,15 @@ bool IncomingPacket::_doREQUEST_PROOF_OF_WORK(const RuntimeEnvironment *RR,const
 
 void IncomingPacket::_sendErrorNeedCredentials(const RuntimeEnvironment *RR,const SharedPtr<Peer> &peer,const uint64_t nwid)
 {
-	if (peer->rateGateOutgoingComRequest(RR->node->now())) {
+	const uint64_t now = RR->node->now();
+	if (peer->rateGateOutgoingComRequest(now)) {
 		Packet outp(source(),RR->identity.address(),Packet::VERB_ERROR);
 		outp.append((uint8_t)verb());
 		outp.append(packetId());
 		outp.append((uint8_t)Packet::ERROR_NEED_MEMBERSHIP_CERTIFICATE);
 		outp.append(nwid);
 		outp.armor(peer->key(),true);
-		_path->send(RR,outp.data(),outp.size(),RR->node->now());
+		_path->send(RR,outp.data(),outp.size(),now);
 	}
 }
 

+ 3 - 5
node/Node.hpp

@@ -267,19 +267,17 @@ public:
 	}
 
 	/**
-	 * Check whether a given packet ID is something we are expecting a reply to (and erase from list)
+	 * Check whether a given packet ID is something we are expecting a reply to
 	 *
 	 * @param packetId Packet ID to check
 	 * @return True if we're expecting a reply
 	 */
-	inline bool expectingReplyTo(const uint64_t packetId)
+	inline bool expectingReplyTo(const uint64_t packetId) const
 	{
 		const unsigned long bucket = (unsigned long)(packetId & ZT_EXPECTING_REPLIES_BUCKET_MASK1);
 		for(unsigned long i=0;i<=ZT_EXPECTING_REPLIES_BUCKET_MASK2;++i) {
-			if (_expectingRepliesTo[bucket][i] == packetId) {
-				_expectingRepliesTo[bucket][i] = 0;
+			if (_expectingRepliesTo[bucket][i] == packetId)
 				return true;
-			}
 		}
 		return false;
 	}