diff options
author | Loic Blot <loic.blot@unix-experience.fr> | 2015-03-29 10:49:43 +0200 |
---|---|---|
committer | Loic Blot <loic.blot@unix-experience.fr> | 2015-03-29 10:49:43 +0200 |
commit | dfe00abc5addd66dbf840d7e826690291f4afd93 (patch) | |
tree | 4812065839e27a258e929dfc26d713ff8d0e8818 | |
parent | 3444dec2db30b8aa8a4e9c268fdba2f84b870ce3 (diff) | |
download | minetest-dfe00abc5addd66dbf840d7e826690291f4afd93.tar.gz minetest-dfe00abc5addd66dbf840d7e826690291f4afd93.tar.bz2 minetest-dfe00abc5addd66dbf840d7e826690291f4afd93.zip |
queued_commands must be a std::deque. RunCommandQueues needs to push packet on front, not back
-rw-r--r-- | src/network/connection.cpp | 20 | ||||
-rw-r--r-- | src/network/connection.h | 2 |
2 files changed, 9 insertions, 13 deletions
diff --git a/src/network/connection.cpp b/src/network/connection.cpp index d51324ed4..4440b8cc7 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -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; } } diff --git a/src/network/connection.h b/src/network/connection.h index 0aa63d4cf..9c920cc01 100644 --- a/src/network/connection.h +++ b/src/network/connection.h @@ -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; |