diff options
author | rubidium <rubidium@openttd.org> | 2009-01-08 13:57:50 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-01-08 13:57:50 +0000 |
commit | d4b6cc997dd4eec4d0eb9bc8b2002bcb798e9f3c (patch) | |
tree | 544a1620ce889f583ff4990c62a03a3f1df1972e /src/network/network_client.cpp | |
parent | 020dbb180a11d27b2064640953f3960ede09f9c6 (diff) | |
download | openttd-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.cpp | 43 |
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; } |