mirror of
https://github.com/EQEmu/Server.git
synced 2026-02-17 01:22:25 +00:00
Bug fix plus tweak to reset cwnd when no longer needed
This commit is contained in:
parent
10b01e62df
commit
49505a7a45
@ -140,8 +140,9 @@ void EQ::Net::DaybreakConnectionManager::Process()
|
||||
if ((size_t)time_since_last_send.count() > m_options.connect_delay_ms) {
|
||||
connection->SendConnect();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case StatusConnected: {
|
||||
if (m_options.keepalive_delay_ms != 0) {
|
||||
auto time_since_last_send = std::chrono::duration_cast<std::chrono::milliseconds>(now - connection->m_last_send);
|
||||
@ -372,6 +373,11 @@ void EQ::Net::DaybreakConnection::Process()
|
||||
}
|
||||
|
||||
ProcessInboundQueue();
|
||||
|
||||
if (m_outstanding_bytes == 0) {
|
||||
m_cwnd = 4 * m_max_packet_size;
|
||||
m_ssthresh = m_owner->m_options.max_outstanding_bytes;
|
||||
}
|
||||
}
|
||||
catch (std::exception ex) {
|
||||
LogF(Logs::Detail, Logs::Netcode, "Error processing connection: {0}", ex.what());
|
||||
@ -480,7 +486,7 @@ void EQ::Net::DaybreakConnection::ProcessOutboundQueue()
|
||||
LogF(Logs::Detail, Logs::Netcode, "Sending buffered packet {0} on stream {1}", buff.seq, i);
|
||||
m_outstanding_bytes += buff.sent.packet.Length();
|
||||
stream->outstanding_packets.insert(std::make_pair(buff.seq, buff.sent));
|
||||
InternalSend(buff.sent.packet);
|
||||
InternalBufferedSend(buff.sent.packet);
|
||||
stream->buffered_packets.pop_front();
|
||||
}
|
||||
}
|
||||
@ -502,7 +508,7 @@ void EQ::Net::DaybreakConnection::IncreaseCongestionWindow()
|
||||
|
||||
void EQ::Net::DaybreakConnection::ReduceCongestionWindow()
|
||||
{
|
||||
m_ssthresh = EQEmu::ClampLower(m_cwnd / 2, (size_t)(8 * m_max_packet_size));
|
||||
m_ssthresh = std::max((size_t)m_cwnd / 2, (size_t)m_max_packet_size * 2);
|
||||
m_cwnd = (size_t)m_max_packet_size * 4;
|
||||
|
||||
LogF(Logs::Detail, Logs::Netcode, "Reducing cwnd size new size is {0}", m_cwnd);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user