summaryrefslogtreecommitdiff
path: root/src/network/network_udp.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-07-17 11:47:57 +0000
committerrubidium <rubidium@openttd.org>2008-07-17 11:47:57 +0000
commit60a658259066dae496a60e80f1aaa335dff54e05 (patch)
tree6e8acb232fa0954b26e45427f5fe235e47f3e471 /src/network/network_udp.cpp
parent2e4f32023c8f8bb5e116d3779f1c90a33a823008 (diff)
downloadopenttd-60a658259066dae496a60e80f1aaa335dff54e05.tar.xz
(svn r13713) -Fix: possible crash on creating a network packet.
Diffstat (limited to 'src/network/network_udp.cpp')
-rw-r--r--src/network/network_udp.cpp57
1 files changed, 5 insertions, 52 deletions
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp
index c0ee3bbd5..1a85d3d98 100644
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -108,12 +108,6 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_FIND_SERVER)
DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
{
- NetworkTCPSocketHandler *cs;
- NetworkClientInfo *ci;
- Player *player;
- byte current = 0;
- int i;
-
// Just a fail-safe.. should never happen
if (!_network_udp_server) return;
@@ -126,6 +120,8 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
/* Fetch the latest version of everything */
NetworkPopulateCompanyInfo();
+ Player *player;
+ byte current = 0;
/* Go through all the players */
FOR_ALL_PLAYERS(player) {
/* Skip non-active players */
@@ -146,58 +142,15 @@ DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_DETAIL_INFO)
/* Send 1 if there is a passord for the company else send 0 */
packet.Send_bool (!StrEmpty(_network_player_info[player->index].password));
- for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
+ for (int i = 0; i < NETWORK_VEHICLE_TYPES; i++) {
packet.Send_uint16(_network_player_info[player->index].num_vehicle[i]);
-
- for (i = 0; i < NETWORK_STATION_TYPES; i++)
- packet.Send_uint16(_network_player_info[player->index].num_station[i]);
-
- /* Find the clients that are connected to this player */
- FOR_ALL_CLIENTS(cs) {
- ci = DEREF_CLIENT_INFO(cs);
- if (ci->client_playas == player->index) {
- packet.Send_bool (true);
- packet.Send_string(ci->client_name);
- packet.Send_string(ci->unique_id);
- packet.Send_uint32(ci->join_date);
- }
- }
- /* Also check for the server itself */
- ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
- if (ci->client_playas == player->index) {
- packet.Send_bool (true);
- packet.Send_string(ci->client_name);
- packet.Send_string(ci->unique_id);
- packet.Send_uint32(ci->join_date);
}
- /* Indicates end of client list */
- packet.Send_bool(false);
- }
-
- /* And check if we have any spectators */
- FOR_ALL_CLIENTS(cs) {
- ci = DEREF_CLIENT_INFO(cs);
- if (!IsValidPlayer(ci->client_playas)) {
- packet.Send_bool (true);
- packet.Send_string(ci->client_name);
- packet.Send_string(ci->unique_id);
- packet.Send_uint32(ci->join_date);
+ for (int i = 0; i < NETWORK_STATION_TYPES; i++) {
+ packet.Send_uint16(_network_player_info[player->index].num_station[i]);
}
}
- /* Also check for the server itself */
- ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
- if (!IsValidPlayer(ci->client_playas)) {
- packet.Send_bool (true);
- packet.Send_string(ci->client_name);
- packet.Send_string(ci->unique_id);
- packet.Send_uint32(ci->join_date);
- }
-
- /* Indicates end of client list */
- packet.Send_bool(false);
-
this->SendPacket(&packet, client_addr);
}