mirror of
https://github.com/EvernodeXRPL/hpcore.git
synced 2026-04-29 15:37:59 +00:00
Fixing connection not closing when threshold exceeded from a single attempt. (#261)
* Fixing connection not closing when threshold exceeded from a sigle message. * Updated hpws binary.
This commit is contained in:
committed by
GitHub
parent
c426e2a30e
commit
70a83893b0
@@ -47,26 +47,24 @@ namespace corebill
|
||||
// Reset counter timestamp.
|
||||
stat.timestamp = time_now;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check whether we have exceeded the threshold within the monitering interval.
|
||||
const uint64_t elapsed_time = time_now - stat.timestamp;
|
||||
if (elapsed_time <= VIOLATION_REFRESH_INTERVAL && stat.counter > VIOLATION_THRESHOLD)
|
||||
{
|
||||
// IP exceeded violation threshold.
|
||||
|
||||
stat.timestamp = 0;
|
||||
stat.counter = 0;
|
||||
std::scoped_lock<std::mutex> gray_list_lock(graylist_mutex);
|
||||
graylist.emplace(host, VIOLATION_REFRESH_INTERVAL);
|
||||
LOG_WARNING << host << " placed on graylist.";
|
||||
}
|
||||
else if (elapsed_time > VIOLATION_REFRESH_INTERVAL)
|
||||
{
|
||||
// Start the counter fresh.
|
||||
stat.timestamp = time_now;
|
||||
stat.counter = 1;
|
||||
}
|
||||
// Check whether we have exceeded the threshold within the monitering interval.
|
||||
const uint64_t elapsed_time = time_now - stat.timestamp;
|
||||
if (elapsed_time <= VIOLATION_REFRESH_INTERVAL && stat.counter > VIOLATION_THRESHOLD)
|
||||
{
|
||||
// IP exceeded violation threshold.
|
||||
|
||||
stat.timestamp = 0;
|
||||
stat.counter = 0;
|
||||
std::scoped_lock<std::mutex> gray_list_lock(graylist_mutex);
|
||||
graylist.emplace(host, VIOLATION_REFRESH_INTERVAL);
|
||||
LOG_WARNING << host << " placed on graylist.";
|
||||
}
|
||||
else if (elapsed_time > VIOLATION_REFRESH_INTERVAL)
|
||||
{
|
||||
// Start the counter fresh.
|
||||
stat.timestamp = time_now;
|
||||
stat.counter = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -275,25 +275,23 @@ namespace comm
|
||||
// Reset counter timestamp.
|
||||
t.timestamp = time_now;
|
||||
}
|
||||
else
|
||||
|
||||
// Check whether we have exceeded the threshold within the monitering interval.
|
||||
const uint64_t elapsed_time = time_now - t.timestamp;
|
||||
if (elapsed_time <= t.intervalms && t.counter_value > t.threshold_limit)
|
||||
{
|
||||
// Check whether we have exceeded the threshold within the monitering interval.
|
||||
const uint64_t elapsed_time = time_now - t.timestamp;
|
||||
if (elapsed_time <= t.intervalms && t.counter_value > t.threshold_limit)
|
||||
{
|
||||
mark_for_closure();
|
||||
mark_for_closure();
|
||||
|
||||
t.timestamp = 0;
|
||||
t.counter_value = 0;
|
||||
t.timestamp = 0;
|
||||
t.counter_value = 0;
|
||||
|
||||
LOG_INFO << "Session " << display_name() << " threshold exceeded. (type:" << threshold_type << " limit:" << t.threshold_limit << ")";
|
||||
corebill::report_violation(host_address);
|
||||
}
|
||||
else if (elapsed_time > t.intervalms)
|
||||
{
|
||||
t.timestamp = time_now;
|
||||
t.counter_value = amount;
|
||||
}
|
||||
LOG_INFO << "Session " << display_name() << " threshold exceeded. (type:" << threshold_type << " limit:" << t.threshold_limit << ")";
|
||||
corebill::report_violation(host_address);
|
||||
}
|
||||
else if (elapsed_time > t.intervalms)
|
||||
{
|
||||
t.timestamp = time_now;
|
||||
t.counter_value = amount;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace hpws
|
||||
// used when waiting for messages that should already be on the pipe
|
||||
#define HPWS_SMALL_TIMEOUT 10
|
||||
// used when waiting for server process to spawn
|
||||
#define HPWS_LONG_TIMEOUT 50
|
||||
#define HPWS_LONG_TIMEOUT 1500 // This timeout has to account the possible delays in communication via internet.
|
||||
|
||||
typedef union
|
||||
{
|
||||
|
||||
BIN
test/bin/hpws
BIN
test/bin/hpws
Binary file not shown.
Reference in New Issue
Block a user