From 60a658259066dae496a60e80f1aaa335dff54e05 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 17 Jul 2008 11:47:57 +0000 Subject: (svn r13713) -Fix: possible crash on creating a network packet. --- src/network/network_udp.cpp | 57 ++++----------------------------------------- 1 file changed, 5 insertions(+), 52 deletions(-) (limited to 'src/network/network_udp.cpp') 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); } -- cgit v1.2.3-70-g09d2