rpc: do not return bans if they're effectively spent

The blocked ip list will still hold them till next time
a connection attempt is made with that IP, so the effective
length of the ban may be negative.
This commit is contained in:
moneromooo-monero 2016-03-12 13:44:55 +00:00
parent 474e4c00f0
commit 789e2755f7
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
1 changed files with 7 additions and 4 deletions

View File

@ -950,13 +950,16 @@ namespace cryptonote
return false; return false;
} }
auto now = time(nullptr);
std::map<uint32_t, time_t> blocked_ips = m_p2p.get_blocked_ips(); std::map<uint32_t, time_t> blocked_ips = m_p2p.get_blocked_ips();
for (std::map<uint32_t, time_t>::const_iterator i = blocked_ips.begin(); i != blocked_ips.end(); ++i) for (std::map<uint32_t, time_t>::const_iterator i = blocked_ips.begin(); i != blocked_ips.end(); ++i)
{ {
COMMAND_RPC_GETBANS::ban b; if (i->second > now) {
b.ip = i->first; COMMAND_RPC_GETBANS::ban b;
b.seconds = i->second; b.ip = i->first;
res.bans.push_back(b); b.seconds = i->second - now;
res.bans.push_back(b);
}
} }
res.status = CORE_RPC_STATUS_OK; res.status = CORE_RPC_STATUS_OK;