forked from Mirrorlandia_minetest/minetest
queued_commands must be a std::deque. RunCommandQueues needs to push packet on front, not back
This commit is contained in:
parent
3444dec2db
commit
dfe00abc5a
@ -1063,14 +1063,14 @@ void UDPPeer::PutReliableSendCommand(ConnectionCommand &c,
|
||||
<<" processing reliable command for peer id: " << c.peer_id
|
||||
<<" data size: " << c.data.getSize() << std::endl);
|
||||
if (!processReliableSendCommand(c,max_packet_size)) {
|
||||
channels[c.channelnum].queued_commands.push(c);
|
||||
channels[c.channelnum].queued_commands.push_back(c);
|
||||
}
|
||||
}
|
||||
else {
|
||||
LOG(dout_con<<m_connection->getDesc()
|
||||
<<" Queueing reliable command for peer id: " << c.peer_id
|
||||
<<" data size: " << c.data.getSize() <<std::endl);
|
||||
channels[c.channelnum].queued_commands.push(c);
|
||||
channels[c.channelnum].queued_commands.push_back(c);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1182,17 +1182,15 @@ void UDPPeer::RunCommandQueues(
|
||||
unsigned int maxtransfer)
|
||||
{
|
||||
|
||||
for (unsigned int i = 0; i < CHANNEL_COUNT; i++)
|
||||
{
|
||||
for (unsigned int i = 0; i < CHANNEL_COUNT; i++) {
|
||||
unsigned int commands_processed = 0;
|
||||
|
||||
if ((channels[i].queued_commands.size() > 0) &&
|
||||
(channels[i].queued_reliables.size() < maxtransfer) &&
|
||||
(commands_processed < maxcommands))
|
||||
{
|
||||
(commands_processed < maxcommands)) {
|
||||
try {
|
||||
ConnectionCommand c = channels[i].queued_commands.front();
|
||||
channels[i].queued_commands.pop();
|
||||
channels[i].queued_commands.pop_front();
|
||||
LOG(dout_con<<m_connection->getDesc()
|
||||
<<" processing queued reliable command "<<std::endl);
|
||||
if (!processReliableSendCommand(c,max_packet_size)) {
|
||||
@ -1200,7 +1198,7 @@ void UDPPeer::RunCommandQueues(
|
||||
<< " Failed to queue packets for peer_id: " << c.peer_id
|
||||
<< ", delaying sending of " << c.data.getSize()
|
||||
<< " bytes" << std::endl);
|
||||
channels[i].queued_commands.push(c);
|
||||
channels[i].queued_commands.push_front(c);
|
||||
}
|
||||
}
|
||||
catch (ItemNotFoundException &e) {
|
||||
@ -1328,12 +1326,10 @@ bool ConnectionSendThread::packetsQueued()
|
||||
if (dynamic_cast<UDPPeer*>(&peer) == 0)
|
||||
continue;
|
||||
|
||||
for(u16 i=0; i<CHANNEL_COUNT; i++)
|
||||
{
|
||||
for(u16 i=0; i < CHANNEL_COUNT; i++) {
|
||||
Channel *channel = &(dynamic_cast<UDPPeer*>(&peer))->channels[i];
|
||||
|
||||
if (channel->queued_commands.size() > 0)
|
||||
{
|
||||
if (channel->queued_commands.size() > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -501,7 +501,7 @@ public:
|
||||
std::queue<BufferedPacket> queued_reliables;
|
||||
|
||||
//queue commands prior splitting to packets
|
||||
std::queue<ConnectionCommand> queued_commands;
|
||||
std::deque<ConnectionCommand> queued_commands;
|
||||
|
||||
IncomingSplitBuffer incoming_splits;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user