summaryrefslogtreecommitdiff
path: root/node/IncomingPacket.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-27 18:18:26 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-10-27 18:18:26 -0700
commitcdc99bfee10ac58a8dab1aabcb85e69f3862b7ad (patch)
tree82b3a8996b48c101b749ad3fcf59302ba7a3e416 /node/IncomingPacket.cpp
parent88b100e5d0db5df16622fa48899cf652e09b3e91 (diff)
downloadinfinitytier-cdc99bfee10ac58a8dab1aabcb85e69f3862b7ad.tar.gz
infinitytier-cdc99bfee10ac58a8dab1aabcb85e69f3862b7ad.zip
Add a circuit breaker for VERB_PUSH_DIRECT_PATHS.
Diffstat (limited to 'node/IncomingPacket.cpp')
-rw-r--r--node/IncomingPacket.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp
index b1a9af3b..e985b34c 100644
--- a/node/IncomingPacket.cpp
+++ b/node/IncomingPacket.cpp
@@ -901,6 +901,11 @@ bool IncomingPacket::_doPUSH_DIRECT_PATHS(const RuntimeEnvironment *RR,const Sha
{
try {
const uint64_t now = RR->node->now();
+ if (!peer->shouldRespondToDirectPathPush(now)) {
+ TRACE("dropped PUSH_DIRECT_PATHS from %s(%s): circuit breaker tripped",source().toString().c_str(),_remoteAddress.toString().c_str());
+ return true;
+ }
+
const Path *currentBest = peer->getBestPath(now);
unsigned int count = at<uint16_t>(ZT_PACKET_IDX_PAYLOAD);