aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Blot <loic.blot@unix-experience.fr>2015-03-29 10:49:43 +0200
committerLoic Blot <loic.blot@unix-experience.fr>2015-03-29 10:49:43 +0200
commitdfe00abc5addd66dbf840d7e826690291f4afd93 (patch)
tree4812065839e27a258e929dfc26d713ff8d0e8818
parent3444dec2db30b8aa8a4e9c268fdba2f84b870ce3 (diff)
downloadminetest-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.cpp20
-rw-r--r--src/network/connection.h2
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;