mirror of
https://github.com/EvernodeXRPL/hpcore.git
synced 2026-04-29 15:37:59 +00:00
Added bad and duplicate message counters to socket_session (#55)
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "../fbschema/p2pmsg_content_generated.h"
|
||||
#include "../fbschema/p2pmsg_helpers.hpp"
|
||||
#include "../sock/socket_message.hpp"
|
||||
#include "../sock/socket_session.hpp"
|
||||
#include "p2p.hpp"
|
||||
#include "peer_session_handler.hpp"
|
||||
|
||||
@@ -23,14 +24,10 @@ util::rollover_hashset recent_peermsg_hashes(200);
|
||||
*/
|
||||
void peer_session_handler::on_connect(sock::socket_session<peer_outbound_message> *session)
|
||||
{
|
||||
if (!session->flags[util::SESSION_FLAG::INBOUND])
|
||||
if (!session->flags[sock::SESSION_FLAG::INBOUND])
|
||||
{
|
||||
// We init the session unique id to associate with the peer.
|
||||
session->init_uniqueid();
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(p2p::peer_connections_mutex);
|
||||
peer_connections.insert(std::make_pair(session->uniqueid, session));
|
||||
}
|
||||
std::lock_guard<std::mutex> lock(p2p::peer_connections_mutex);
|
||||
peer_connections.insert(std::make_pair(session->uniqueid, session));
|
||||
LOG_DBG << "Adding peer to list: " << session->uniqueid;
|
||||
}
|
||||
}
|
||||
@@ -56,6 +53,7 @@ void peer_session_handler::on_message(sock::socket_session<peer_outbound_message
|
||||
|
||||
if (!recent_peermsg_hashes.try_emplace(crypto::get_hash(message)))
|
||||
{
|
||||
session->increment_metric(sock::SESSION_THRESHOLDS::MAX_DUPMSGS_PER_MINUTE, 1);
|
||||
LOG_DBG << "Duplicate peer message.";
|
||||
return;
|
||||
}
|
||||
@@ -67,6 +65,7 @@ void peer_session_handler::on_message(sock::socket_session<peer_outbound_message
|
||||
// We only trust proposals coming from trusted peers.
|
||||
if (p2pmsg::validate_container_trust(container) != 0)
|
||||
{
|
||||
session->increment_metric(sock::SESSION_THRESHOLDS::MAX_BADSIGMSGS_PER_MINUTE, 1);
|
||||
LOG_DBG << "Proposal rejected due to trust failure.";
|
||||
return;
|
||||
}
|
||||
@@ -91,9 +90,8 @@ void peer_session_handler::on_message(sock::socket_session<peer_outbound_message
|
||||
}
|
||||
else
|
||||
{
|
||||
//warn received invalid message from peer.
|
||||
session->increment_metric(sock::SESSION_THRESHOLDS::MAX_BADMSGS_PER_MINUTE, 1);
|
||||
LOG_DBG << "Received invalid message type from peer";
|
||||
//TODO: remove/penalize node who sent the message.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user