summaryrefslogtreecommitdiff
path: root/src/network/network_client.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-01-08 13:57:50 +0000
committerrubidium <rubidium@openttd.org>2009-01-08 13:57:50 +0000
commitd4b6cc997dd4eec4d0eb9bc8b2002bcb798e9f3c (patch)
tree544a1620ce889f583ff4990c62a03a3f1df1972e /src/network/network_client.cpp
parent020dbb180a11d27b2064640953f3960ede09f9c6 (diff)
downloadopenttd-d4b6cc997dd4eec4d0eb9bc8b2002bcb798e9f3c.tar.xz
(svn r14910) -Codechange: merge the command queue handling into a single location
Diffstat (limited to 'src/network/network_client.cpp')
-rw-r--r--src/network/network_client.cpp43
1 files changed, 16 insertions, 27 deletions
diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp
index 1c56fda7c..77d18d291 100644
--- a/src/network/network_client.cpp
+++ b/src/network/network_client.cpp
@@ -673,47 +673,36 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_SYNC)
DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_COMMAND)
{
- CommandPacket *cp = MallocT<CommandPacket>(1);
- cp->company = (CompanyID)p->Recv_uint8();
- cp->cmd = p->Recv_uint32();
- cp->p1 = p->Recv_uint32();
- cp->p2 = p->Recv_uint32();
- cp->tile = p->Recv_uint32();
- p->Recv_string(cp->text, sizeof(cp->text));
- cp->callback = p->Recv_uint8();
- cp->frame = p->Recv_uint32();
- cp->my_cmd = p->Recv_bool();
- cp->next = NULL;
-
- if (!IsValidCommand(cp->cmd)) {
+ CommandPacket cp;
+ cp.company = (CompanyID)p->Recv_uint8();
+ cp.cmd = p->Recv_uint32();
+ cp.p1 = p->Recv_uint32();
+ cp.p2 = p->Recv_uint32();
+ cp.tile = p->Recv_uint32();
+ p->Recv_string(cp.text, sizeof(cp.text));
+ cp.callback = p->Recv_uint8();
+ cp.frame = p->Recv_uint32();
+ cp.my_cmd = p->Recv_bool();
+ cp.next = NULL;
+
+ if (!IsValidCommand(cp.cmd)) {
IConsolePrintF(CC_ERROR, "WARNING: invalid command from server, dropping...");
- free(cp);
return NETWORK_RECV_STATUS_MALFORMED_PACKET;
}
- if (GetCommandFlags(cp->cmd) & CMD_OFFLINE) {
+ if (GetCommandFlags(cp.cmd) & CMD_OFFLINE) {
IConsolePrintF(CC_ERROR, "WARNING: offline only command from server, dropping...");
- free(cp);
return NETWORK_RECV_STATUS_MALFORMED_PACKET;
}
- if ((cp->cmd & CMD_FLAGS_MASK) != 0) {
+ if ((cp.cmd & CMD_FLAGS_MASK) != 0) {
IConsolePrintF(CC_ERROR, "WARNING: invalid command flag from server, dropping...");
- free(cp);
return NETWORK_RECV_STATUS_MALFORMED_PACKET;
}
// The server did send us this command..
// queue it in our own queue, so we can handle it in the upcoming frame!
-
- if (_local_command_queue == NULL) {
- _local_command_queue = cp;
- } else {
- // Find last packet
- CommandPacket *c = _local_command_queue;
- while (c->next != NULL) c = c->next;
- c->next = cp;
- }
+ NetworkAddCommandQueue(cp);
return NETWORK_RECV_STATUS_OKAY;
}