fix front access to empty array
and increase send timeout assert
This commit is contained in:
parent
10756e13ce
commit
489556e322
@ -8,9 +8,10 @@ void SendingTransfers::tick(float delta) {
|
|||||||
for (auto it = peer_it->second.begin(); it != peer_it->second.end();) {
|
for (auto it = peer_it->second.begin(); it != peer_it->second.end();) {
|
||||||
it->second.time_since_activity += delta;
|
it->second.time_since_activity += delta;
|
||||||
|
|
||||||
// if we have not heard for 2min, timeout (lower level event on real timeout)
|
// if we have not heard for 10min, timeout (lower level event on real timeout)
|
||||||
|
// (2min was too little, so it seems)
|
||||||
// TODO: do we really need this if we get events?
|
// TODO: do we really need this if we get events?
|
||||||
if (it->second.time_since_activity >= 120.f) {
|
if (it->second.time_since_activity >= 60.f*10.f) {
|
||||||
std::cerr << "SHA1_NGCFT1 warning: sending tansfer timed out " << "." << int(it->first) << "\n";
|
std::cerr << "SHA1_NGCFT1 warning: sending tansfer timed out " << "." << int(it->first) << "\n";
|
||||||
assert(false);
|
assert(false);
|
||||||
it = peer_it->second.erase(it);
|
it = peer_it->second.erase(it);
|
||||||
|
@ -18,58 +18,62 @@ void transfer_tally_update(ObjectRegistry& os_reg, const float time_now) {
|
|||||||
// if newest older than 2sec
|
// if newest older than 2sec
|
||||||
// discard
|
// discard
|
||||||
|
|
||||||
if (!peer.recently_sent.empty() && time_now - peer.recently_sent.back().time_point >= 2.f) {
|
if (!peer.recently_sent.empty()) {
|
||||||
// clean up stale
|
if (time_now - peer.recently_sent.back().time_point >= 2.f) {
|
||||||
auto peer_in_stats_it = tss.find(peer_c);
|
// clean up stale
|
||||||
if (peer_in_stats_it != tss.end()) {
|
auto peer_in_stats_it = tss.find(peer_c);
|
||||||
peer_in_stats_it->second.rate_up = 0.f;
|
if (peer_in_stats_it != tss.end()) {
|
||||||
}
|
peer_in_stats_it->second.rate_up = 0.f;
|
||||||
|
|
||||||
peer.recently_sent.clear();
|
|
||||||
if (peer.recently_received.empty()) {
|
|
||||||
to_remove.push_back(peer_c);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// else trim too old front
|
|
||||||
peer.trimSent(time_now);
|
|
||||||
|
|
||||||
size_t tally_bytes {0u};
|
|
||||||
for (auto& [time, bytes, accounted] : peer.recently_sent) {
|
|
||||||
if (!accounted) {
|
|
||||||
tss[peer_c].total_up += bytes;
|
|
||||||
accounted = true;
|
|
||||||
}
|
}
|
||||||
tally_bytes += bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
tss[peer_c].rate_up = tally_bytes / (time_now - peer.recently_sent.front().time_point + 0.00001f);
|
peer.recently_sent.clear();
|
||||||
|
if (peer.recently_received.empty()) {
|
||||||
|
to_remove.push_back(peer_c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// else trim too old front
|
||||||
|
peer.trimSent(time_now);
|
||||||
|
|
||||||
|
size_t tally_bytes {0u};
|
||||||
|
for (auto& [time, bytes, accounted] : peer.recently_sent) {
|
||||||
|
if (!accounted) {
|
||||||
|
tss[peer_c].total_up += bytes;
|
||||||
|
accounted = true;
|
||||||
|
}
|
||||||
|
tally_bytes += bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
tss[peer_c].rate_up = tally_bytes / (time_now - peer.recently_sent.front().time_point + 0.00001f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!peer.recently_received.empty() && time_now - peer.recently_received.back().time_point >= 2.f) {
|
if (!peer.recently_received.empty()) {
|
||||||
// clean up stale
|
if (time_now - peer.recently_received.back().time_point >= 2.f) {
|
||||||
auto peer_in_stats_it = tss.find(peer_c);
|
// clean up stale
|
||||||
if (peer_in_stats_it != tss.end()) {
|
auto peer_in_stats_it = tss.find(peer_c);
|
||||||
peer_in_stats_it->second.rate_down = 0.f;
|
if (peer_in_stats_it != tss.end()) {
|
||||||
}
|
peer_in_stats_it->second.rate_down = 0.f;
|
||||||
|
|
||||||
peer.recently_received.clear();
|
|
||||||
if (peer.recently_sent.empty()) {
|
|
||||||
to_remove.push_back(peer_c);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// else trim too old front
|
|
||||||
peer.trimReceived(time_now);
|
|
||||||
|
|
||||||
size_t tally_bytes {0u};
|
|
||||||
for (auto& [time, bytes, accounted] : peer.recently_received) {
|
|
||||||
if (!accounted) {
|
|
||||||
tss[peer_c].total_down += bytes;
|
|
||||||
accounted = true;
|
|
||||||
}
|
}
|
||||||
tally_bytes += bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
tss[peer_c].rate_down = tally_bytes / (time_now - peer.recently_received.front().time_point + 0.00001f);
|
peer.recently_received.clear();
|
||||||
|
if (peer.recently_sent.empty()) {
|
||||||
|
to_remove.push_back(peer_c);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// else trim too old front
|
||||||
|
peer.trimReceived(time_now);
|
||||||
|
|
||||||
|
size_t tally_bytes {0u};
|
||||||
|
for (auto& [time, bytes, accounted] : peer.recently_received) {
|
||||||
|
if (!accounted) {
|
||||||
|
tss[peer_c].total_down += bytes;
|
||||||
|
accounted = true;
|
||||||
|
}
|
||||||
|
tally_bytes += bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
tss[peer_c].rate_down = tally_bytes / (time_now - peer.recently_received.front().time_point + 0.00001f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user