mirror of
https://github.com/monero-project/monero.git
synced 2024-11-17 16:27:39 +00:00
Merge pull request #716
789e275
rpc: do not return bans if they're effectively spent (moneromooo-monero)474e4c0
p2p: lock access to the blocked ips map (moneromooo-monero)
This commit is contained in:
commit
b66d455536
3 changed files with 10 additions and 7 deletions
|
@ -120,7 +120,7 @@ namespace nodetool
|
|||
void delete_connections(size_t count);
|
||||
virtual bool block_ip(uint32_t adress, time_t seconds = P2P_IP_BLOCKTIME);
|
||||
virtual bool unblock_ip(uint32_t address);
|
||||
virtual std::map<uint32_t, time_t> get_blocked_ips() const { return m_blocked_ips; }
|
||||
virtual std::map<uint32_t, time_t> get_blocked_ips() { CRITICAL_REGION_LOCAL(m_blocked_ips_lock); return m_blocked_ips; }
|
||||
private:
|
||||
const std::vector<std::string> m_seed_nodes_list =
|
||||
{ "seeds.moneroseeds.se"
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace nodetool
|
|||
virtual void for_each_connection(std::function<bool(t_connection_context&, peerid_type)> f)=0;
|
||||
virtual bool block_ip(uint32_t adress, time_t seconds = 0)=0;
|
||||
virtual bool unblock_ip(uint32_t adress)=0;
|
||||
virtual std::map<uint32_t, time_t> get_blocked_ips()const=0;
|
||||
virtual std::map<uint32_t, time_t> get_blocked_ips()=0;
|
||||
virtual bool add_ip_fail(uint32_t adress)=0;
|
||||
};
|
||||
|
||||
|
@ -96,7 +96,7 @@ namespace nodetool
|
|||
{
|
||||
return true;
|
||||
}
|
||||
virtual std::map<uint32_t, time_t> get_blocked_ips() const
|
||||
virtual std::map<uint32_t, time_t> get_blocked_ips()
|
||||
{
|
||||
return std::map<uint32_t, time_t>();
|
||||
}
|
||||
|
|
|
@ -950,13 +950,16 @@ namespace cryptonote
|
|||
return false;
|
||||
}
|
||||
|
||||
auto now = time(nullptr);
|
||||
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)
|
||||
{
|
||||
COMMAND_RPC_GETBANS::ban b;
|
||||
b.ip = i->first;
|
||||
b.seconds = i->second;
|
||||
res.bans.push_back(b);
|
||||
if (i->second > now) {
|
||||
COMMAND_RPC_GETBANS::ban b;
|
||||
b.ip = i->first;
|
||||
b.seconds = i->second - now;
|
||||
res.bans.push_back(b);
|
||||
}
|
||||
}
|
||||
|
||||
res.status = CORE_RPC_STATUS_OK;
|
||||
|
|
Loading…
Reference in a new issue