Fix for bug where packets were not combining when sent inside cwnd, altered some settings

This commit is contained in:
KimLS 2017-07-06 18:03:19 -07:00
parent 3878bd0c76
commit 7300776a85
2 changed files with 12 additions and 8 deletions

View File

@ -478,7 +478,7 @@ void EQ::Net::DaybreakConnection::ProcessOutboundQueue()
stream->outstanding_bytes += buff.sent.packet.Length(); stream->outstanding_bytes += buff.sent.packet.Length();
stream->outstanding_packets.insert(std::make_pair(buff.seq, buff.sent)); stream->outstanding_packets.insert(std::make_pair(buff.seq, buff.sent));
InternalSend(buff.sent.packet); InternalBufferedSend(buff.sent.packet);
stream->buffered_packets.pop_front(); stream->buffered_packets.pop_front();
} }
} }
@ -1133,7 +1133,7 @@ void EQ::Net::DaybreakConnection::BufferPacket(int stream, uint16_t seq, Daybrea
s->outstanding_bytes += sent.packet.Length(); s->outstanding_bytes += sent.packet.Length();
s->outstanding_packets.insert(std::make_pair(seq, sent)); s->outstanding_packets.insert(std::make_pair(seq, sent));
InternalSend(sent.packet); InternalBufferedSend(sent.packet);
} }
void EQ::Net::DaybreakConnection::SendAck(int stream_id, uint16_t seq) void EQ::Net::DaybreakConnection::SendAck(int stream_id, uint16_t seq)
@ -1187,6 +1187,10 @@ void EQ::Net::DaybreakConnection::InternalBufferedSend(Packet &p)
FlushBuffer(); FlushBuffer();
} }
if (m_buffered_packets.size() == 0) {
m_hold_time = Clock::now();
}
DynamicPacket copy; DynamicPacket copy;
copy.PutPacket(0, p); copy.PutPacket(0, p);
m_buffered_packets.push_back(copy); m_buffered_packets.push_back(copy);

View File

@ -219,8 +219,8 @@ namespace EQ
keepalive_delay_ms = 9000; keepalive_delay_ms = 9000;
resend_delay_ms = 150; resend_delay_ms = 150;
resend_delay_factor = 1.5; resend_delay_factor = 1.5;
resend_delay_min = 150; resend_delay_min = 300;
resend_delay_max = 1000; resend_delay_max = 3000;
connect_delay_ms = 500; connect_delay_ms = 500;
stale_connection_ms = 90000; stale_connection_ms = 90000;
connect_stale_ms = 5000; connect_stale_ms = 5000;
@ -230,14 +230,14 @@ namespace EQ
encode_passes[1] = DaybreakEncodeType::EncodeNone; encode_passes[1] = DaybreakEncodeType::EncodeNone;
port = 0; port = 0;
hold_size = 448; hold_size = 448;
hold_length_ms = 10; hold_length_ms = 50;
simulated_in_packet_loss = 0; simulated_in_packet_loss = 0;
simulated_out_packet_loss = 0; simulated_out_packet_loss = 0;
tic_rate_hertz = 60.0; tic_rate_hertz = 60.0;
resend_timeout = 90000; resend_timeout = 90000;
connection_close_time = 2000; connection_close_time = 2000;
max_outstanding_packets = 300; max_outstanding_packets = 400;
max_outstanding_bytes = 200 * 512; max_outstanding_bytes = 400 * 512;
} }
size_t max_packet_size; size_t max_packet_size;