diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-27 16:33:37 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-09-27 16:33:37 -0700 |
commit | 0b44919ba23021231dd561f530c5d30836846735 (patch) | |
tree | 1d3075b301c5a2e7139fb9b415eb4baef3601212 /node | |
parent | 9f550292fe0ebc32e61eeada9e3a69970c874724 (diff) | |
download | infinitytier-0b44919ba23021231dd561f530c5d30836846735.tar.gz infinitytier-0b44919ba23021231dd561f530c5d30836846735.zip |
Clusters can send multiple OKs so we must allow this.
Diffstat (limited to 'node')
-rw-r--r-- | node/IncomingPacket.cpp | 5 | ||||
-rw-r--r-- | node/Node.hpp | 8 |
2 files changed, 6 insertions, 7 deletions
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index f54752d1..b77ead4c 100644 --- a/node/IncomingPacket.cpp +++ b/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); } } diff --git a/node/Node.hpp b/node/Node.hpp index ddc52651..11462531 100644 --- a/node/Node.hpp +++ b/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; } |