Added some rules for network server startup, added a limit on number of resends per connection channel per cycle (default is 10)

This commit is contained in:
KimLS
2019-01-03 20:04:09 -08:00
parent 3cb548f72e
commit 6c1e3ae3d6
6 changed files with 36 additions and 2 deletions
+7
View File
@@ -1016,6 +1016,7 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream)
return;
}
auto resends = 0;
auto now = Clock::now();
auto s = &m_streams[stream];
for (auto &entry : s->sent_packets) {
@@ -1026,6 +1027,7 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream)
entry.second.last_sent = now;
entry.second.times_resent++;
entry.second.resend_delay = EQEmu::Clamp(entry.second.resend_delay * 2, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max);
resends++;
}
}
else {
@@ -1040,8 +1042,13 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream)
entry.second.last_sent = now;
entry.second.times_resent++;
entry.second.resend_delay = EQEmu::Clamp(entry.second.resend_delay * 2, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max);
resends++;
}
}
if (resends >= m_owner->m_options.resends_per_connection_cycle) {
return;
}
}
}
+3 -1
View File
@@ -208,7 +208,8 @@ namespace EQ
resend_delay_ms = 30;
resend_delay_factor = 1.25;
resend_delay_min = 150;
resend_delay_max = 3000;
resend_delay_max = 5000;
resends_per_connection_cycle = 10;
connect_delay_ms = 500;
stale_connection_ms = 90000;
connect_stale_ms = 5000;
@@ -233,6 +234,7 @@ namespace EQ
size_t resend_delay_ms;
size_t resend_delay_min;
size_t resend_delay_max;
int resends_per_connection_cycle;
size_t connect_delay_ms;
size_t connect_stale_ms;
size_t stale_connection_ms;
+8
View File
@@ -704,6 +704,14 @@ RULE_CATEGORY(Console)
RULE_INT(Console, SessionTimeOut, 600000) // Amount of time in ms for the console session to time out
RULE_CATEGORY_END()
RULE_CATEGORY(Network)
RULE_INT(Network, ResendDelayBaseMS, 50)
RULE_REAL(Network, ResendDelayFactor, 1.5)
RULE_INT(Network, ResendDelayMinMS, 250)
RULE_INT(Network, ResendDelayMaxMS, 5000)
RULE_INT(Network, ResendsPerCycle, 10)
RULE_CATEGORY_END()
RULE_CATEGORY(QueryServ)
RULE_BOOL(QueryServ, PlayerLogChat, false) // Logs Player Chat
RULE_BOOL(QueryServ, PlayerLogTrades, false) // Logs Player Trades