diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -3558,20 +3558,24 @@ if (strCommand == NetMsgType::MEMPOOL) { if (!(pfrom->GetLocalServices() & NODE_BLOOM) && !pfrom->fWhitelisted) { - LogPrint(BCLog::NET, - "mempool request with bloom filters disabled, disconnect " - "peer=%d\n", - pfrom->GetId()); - pfrom->fDisconnect = true; + if (!pfrom->HasPermission(PF_NOBAN)) { + LogPrint(BCLog::NET, + "mempool request with bloom filters disabled, " + "disconnect peer=%d\n", + pfrom->GetId()); + pfrom->fDisconnect = true; + } return true; } if (connman->OutboundTargetReached(false) && !pfrom->fWhitelisted) { - LogPrint(BCLog::NET, - "mempool request with bandwidth limit reached, disconnect " - "peer=%d\n", - pfrom->GetId()); - pfrom->fDisconnect = true; + if (!pfrom->HasPermission(PF_NOBAN)) { + LogPrint(BCLog::NET, + "mempool request with bandwidth limit reached, " + "disconnect peer=%d\n", + pfrom->GetId()); + pfrom->fDisconnect = true; + } return true; }