diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp index f54752d10..b77ead4c3 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,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 ddc52651a..114625314 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; }