diff --git a/network.c b/network.c --- a/network.c +++ b/network.c @@ -35,6 +35,10 @@ static byte _network_clients_connected = // The index counter for new clients (is never decreased) static uint16 _network_client_index = NETWORK_SERVER_INDEX + 1; +/* Some externs / forwards */ +extern void ShowJoinStatusWindow(); +extern void StateGameLoop(); + // Function that looks up the CI for a given client-index NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index) { @@ -48,9 +52,9 @@ NetworkClientInfo *NetworkFindClientInfo } // Function that looks up the CS for a given client-index -ClientState *NetworkFindClientStateFromIndex(uint16 client_index) +NetworkClientState *NetworkFindClientStateFromIndex(uint16 client_index) { - ClientState *cs; + NetworkClientState *cs; for (cs = _clients; cs != &_clients[MAX_CLIENT_INFO]; cs++) if (cs->index == client_index) @@ -61,7 +65,7 @@ ClientState *NetworkFindClientStateFromI // NetworkGetClientName is a server-safe function to get the name of the client // if the user did not send it yet, Client # is used. -void NetworkGetClientName(char *client_name, size_t size, ClientState *cs) +void NetworkGetClientName(char *client_name, size_t size, const NetworkClientState *cs) { NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs); if (ci->client_name[0] == '\0') @@ -119,7 +123,7 @@ void CDECL NetworkTextMessage(NetworkAct } // Calculate the frame-lag of a client -uint NetworkCalculateLag(const ClientState *cs) +uint NetworkCalculateLag(const NetworkClientState *cs) { int lag = cs->last_frame_server - cs->last_frame; // This client has missed his ACK packet after 1 DAY_TICKS.. @@ -150,7 +154,7 @@ void ServerStartError(char *error) { NetworkError(STR_NETWORK_ERR_SERVER_START); } -void NetworkClientError(byte res, ClientState *cs) { +static void NetworkClientError(byte res, NetworkClientState *cs) { // First, send a CLIENT_ERROR to the server, so he knows we are // disconnection (and why!) NetworkErrorCode errorno; @@ -158,7 +162,7 @@ void NetworkClientError(byte res, Client // We just want to close the connection.. if (res == NETWORK_RECV_STATUS_CLOSE_QUERY) { cs->quited = true; - CloseClient(cs); + NetworkCloseClient(cs); _networking = false; DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0); @@ -179,12 +183,12 @@ void NetworkClientError(byte res, Client } _switch_mode = SM_MENU; - CloseClient(cs); + NetworkCloseClient(cs); _networking = false; } // Find all IP-aliases for this host -void NetworkFindIPs(void) +static void NetworkFindIPs(void) { int i, last; @@ -388,9 +392,9 @@ void ParseConnectionString(const byte ** // Creates a new client from a socket // Used both by the server and the client -static ClientState *AllocClient(SOCKET s) +static NetworkClientState *NetworkAllocClient(SOCKET s) { - ClientState *cs; + NetworkClientState *cs; NetworkClientInfo *ci; byte client_no; @@ -429,7 +433,7 @@ static ClientState *AllocClient(SOCKET s } // Close a connection -void CloseClient(ClientState *cs) +void NetworkCloseClient(NetworkClientState *cs) { NetworkClientInfo *ci; // Socket is already dead @@ -442,7 +446,7 @@ void CloseClient(ClientState *cs) NetworkErrorCode errorno = NETWORK_ERROR_CONNECTION_LOST; char str1[100], str2[100]; char client_name[NETWORK_NAME_LENGTH]; - ClientState *new_cs; + NetworkClientState *new_cs; NetworkGetClientName(client_name, sizeof(client_name), cs); @@ -503,10 +507,8 @@ void CloseClient(ClientState *cs) ci->client_index = NETWORK_EMPTY_INDEX; } -extern void ShowJoinStatusWindow(); - // A client wants to connect to a server -bool NetworkConnect(const char *hostname, int port) +static bool NetworkConnect(const char *hostname, int port) { SOCKET s; struct sockaddr_in sin; @@ -550,7 +552,7 @@ bool NetworkConnect(const char *hostname } // in client mode, only the first client field is used. it's pointing to the server. - AllocClient(s); + NetworkAllocClient(s); ShowJoinStatusWindow(); @@ -564,7 +566,7 @@ static void NetworkAcceptClients(void) { struct sockaddr_in sin; SOCKET s; - ClientState *cs; + NetworkClientState *cs; #ifndef __MORPHOS__ int sin_len; #else @@ -594,7 +596,7 @@ static void NetworkAcceptClients(void) {int b = 1; setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (const char*)&b, sizeof(b));} #endif - cs = AllocClient(s); + cs = NetworkAllocClient(s); if (cs == NULL) { // no more clients allowed? // Send to the client that we are full! @@ -626,7 +628,7 @@ static void NetworkAcceptClients(void) } // Set up the listen socket for the server -bool NetworkListen(void) +static bool NetworkListen(void) { SOCKET ls; struct sockaddr_in sin; @@ -682,16 +684,16 @@ bool NetworkListen(void) } // Close all current connections -void NetworkClose(void) +static void NetworkClose(void) { - ClientState *cs; + NetworkClientState *cs; FOR_ALL_CLIENTS(cs) { if (!_network_server) { SEND_COMMAND(PACKET_CLIENT_QUIT)("leaving"); NetworkSend_Packets(cs); } - CloseClient(cs); + NetworkCloseClient(cs); } if (_network_server) { @@ -704,9 +706,9 @@ void NetworkClose(void) } // Inits the network (cleans sockets and stuff) -void NetworkInitialize(void) +static void NetworkInitialize(void) { - ClientState *cs; + NetworkClientState *cs; uint i; _local_command_queue = NULL; @@ -735,7 +737,7 @@ void NetworkInitialize(void) // add all servers from the config file to our list for (i=0; i != lengthof(_network_server_list); i++) { if (_network_server_list[i] == NULL) break; - AddServer(_network_server_list[i]); + NetworkAddServer(_network_server_list[i]); } } @@ -775,22 +777,25 @@ void NetworkQueryServer(const byte* host // validates an address entered as a string and adds the server to // the list -void AddServer(byte *b) +void NetworkAddServer(const byte *b) { if (*b != '\0') { const byte *port = NULL; const byte *player = NULL; + byte host[NETWORK_HOSTNAME_LENGTH]; uint16 rport; + ttd_strlcpy(host, b, lengthof(host)); + ttd_strlcpy(_network_default_ip, b, lengthof(_network_default_ip)); rport = NETWORK_DEFAULT_PORT; - ParseConnectionString(&player, &port, b); + ParseConnectionString(&player, &port, host); if (player != NULL) _network_playas = atoi(player); if (port != NULL) rport = atoi(port); - NetworkQueryServer(b, rport, true); + NetworkQueryServer(host, rport, true); } } @@ -823,7 +828,7 @@ bool NetworkClientConnectGame(const byte return _networking; } -void NetworkInitGameInfo(void) +static void NetworkInitGameInfo(void) { NetworkClientInfo *ci; @@ -913,7 +918,7 @@ bool NetworkServerStart(void) void NetworkReboot(void) { if (_network_server) { - ClientState *cs; + NetworkClientState *cs; FOR_ALL_CLIENTS(cs) { SEND_COMMAND(PACKET_SERVER_NEWGAME)(cs); NetworkSend_Packets(cs); @@ -937,7 +942,7 @@ void NetworkReboot(void) void NetworkDisconnect(void) { if (_network_server) { - ClientState *cs; + NetworkClientState *cs; FOR_ALL_CLIENTS(cs) { SEND_COMMAND(PACKET_SERVER_SHUTDOWN)(cs); NetworkSend_Packets(cs); @@ -964,9 +969,9 @@ void NetworkDisconnect(void) } // Receives something from the network -bool NetworkReceive(void) +static bool NetworkReceive(void) { - ClientState *cs; + NetworkClientState *cs; int n; fd_set read_fd, write_fd; struct timeval tv; @@ -1022,7 +1027,7 @@ bool NetworkReceive(void) // This sends all buffered commands (if possible) static void NetworkSend(void) { - ClientState *cs; + NetworkClientState *cs; FOR_ALL_CLIENTS(cs) { if (cs->writable) { NetworkSend_Packets(cs); @@ -1036,7 +1041,7 @@ static void NetworkSend(void) } // Handle the local-command-queue -void NetworkHandleLocalQueue(void) +static void NetworkHandleLocalQueue(void) { if (_local_command_queue != NULL) { CommandPacket *cp; @@ -1071,10 +1076,7 @@ void NetworkHandleLocalQueue(void) } } - -extern void StateGameLoop(); - -bool NetworkDoClientLoop(void) +static bool NetworkDoClientLoop(void) { _frame_counter++; @@ -1168,7 +1170,7 @@ void NetworkGameLoop(void) NetworkSend(); } -void NetworkGenerateUniqueId() +static void NetworkGenerateUniqueId(void) { md5_state_t state; md5_byte_t digest[16];