mirror of https://github.com/oxen-io/oxen-mq.git
Fix broken idle expiry timeout
Idle time was being calculated as the negative of what it should have been, so a connection idle for 30s was idle for "-30s", and since -30 is not greater than whatever the idle time is, it would never expire and get closed. This was resulting in SNs keeping connections open forever, which was very likely not helping with connectivity (and probably also responsible for some of the connection rushes triggering ISP DDOS warnings).
This commit is contained in:
parent
712662f144
commit
b2518b8eb3
|
@ -238,14 +238,16 @@ void LokiMQ::proxy_expire_idle_peers() {
|
|||
for (auto it = peers.begin(); it != peers.end(); ) {
|
||||
auto &info = it->second;
|
||||
if (info.outgoing()) {
|
||||
auto idle = info.last_activity - std::chrono::steady_clock::now();
|
||||
if (idle <= info.idle_expiry) {
|
||||
auto idle = std::chrono::steady_clock::now() - info.last_activity;
|
||||
if (idle > info.idle_expiry) {
|
||||
LMQ_LOG(debug, "Closing outgoing connection to ", it->first, ": idle timeout reached");
|
||||
++it; // The below is going to delete our current element
|
||||
proxy_close_connection(info.conn_index, CLOSE_LINGER);
|
||||
} else {
|
||||
LMQ_LOG(trace, "Not closing ", it->first, ": ", idle.count(), "ms <= ", info.idle_expiry.count(), "ms");
|
||||
++it;
|
||||
continue;
|
||||
}
|
||||
LMQ_LOG(debug, "Closing outgoing connection to ", it->first, ": idle timeout reached");
|
||||
++it; // The below is going to delete our current element
|
||||
proxy_close_connection(info.conn_index, CLOSE_LINGER);
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue