From 11d6e21c3ac658b065b64c5c9d0f43c45d7966db Mon Sep 17 00:00:00 2001 From: smatz Date: Sun, 11 Apr 2010 17:17:12 +0000 Subject: (svn r19607) -Codechange: use different packet types instead of packet subtypes --- src/network/network_client.cpp | 70 ++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 26 deletions(-) (limited to 'src/network/network_client.cpp') diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 09dc66001..c2ddbdd39 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -167,18 +167,32 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED) return NETWORK_RECV_STATUS_OKAY; } -DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type, const char *password) +DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_GAME_PASSWORD)(const char *password) { /* - * Packet: CLIENT_PASSWORD + * Packet: CLIENT_GAME_PASSWORD * Function: Send a password to the server to authorize * Data: * uint8: NetworkPasswordType * String: Password */ - Packet *p = new Packet(PACKET_CLIENT_PASSWORD); - p->Send_uint8 (type); - p->Send_string(type == NETWORK_GAME_PASSWORD ? password : GenerateCompanyPasswordHash(password)); + Packet *p = new Packet(PACKET_CLIENT_GAME_PASSWORD); + p->Send_string(password); + MY_CLIENT->Send_Packet(p); + return NETWORK_RECV_STATUS_OKAY; +} + +DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_COMPANY_PASSWORD)(const char *password) +{ + /* + * Packet: CLIENT_COMPANY_PASSWORD + * Function: Send a password to the server to authorize + * Data: + * uint8: NetworkPasswordType + * String: Password + */ + Packet *p = new Packet(PACKET_CLIENT_COMPANY_PASSWORD); + p->Send_string(GenerateCompanyPasswordHash(password)); MY_CLIENT->Send_Packet(p); return NETWORK_RECV_STATUS_OKAY; } @@ -535,30 +549,32 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_CHECK_NEWGRFS) return ret; } -DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD) +DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_GAME_PASSWORD) { - NetworkPasswordType type = (NetworkPasswordType)p->Recv_uint8(); - const char *password = _network_join_server_password; + if (!StrEmpty(password)) { + return SEND_COMMAND(PACKET_CLIENT_GAME_PASSWORD)(password); + } - switch (type) { - case NETWORK_COMPANY_PASSWORD: - /* Initialize the password hash salting variables. */ - _password_game_seed = p->Recv_uint32(); - p->Recv_string(_password_server_id, sizeof(_password_server_id)); - if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - password = _network_join_company_password; - /* FALL THROUGH */ - case NETWORK_GAME_PASSWORD: - if (StrEmpty(password)) { - ShowNetworkNeedPassword(type); - } else { - return SEND_COMMAND(PACKET_CLIENT_PASSWORD)(type, password); - } - return NETWORK_RECV_STATUS_OKAY; + ShowNetworkNeedPassword(NETWORK_GAME_PASSWORD); - default: return NETWORK_RECV_STATUS_MALFORMED_PACKET; + return NETWORK_RECV_STATUS_OKAY; +} + +DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_COMPANY_PASSWORD) +{ + _password_game_seed = p->Recv_uint32(); + p->Recv_string(_password_server_id, sizeof(_password_server_id)); + if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; + + const char *password = _network_join_company_password; + if (!StrEmpty(password)) { + return SEND_COMMAND(PACKET_CLIENT_COMPANY_PASSWORD)(password); } + + ShowNetworkNeedPassword(NETWORK_COMPANY_PASSWORD); + + return NETWORK_RECV_STATUS_OKAY; } DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_WELCOME) @@ -921,8 +937,10 @@ static NetworkClientPacket * const _network_client_packet[] = { NULL, // PACKET_CLIENT_COMPANY_INFO, RECEIVE_COMMAND(PACKET_SERVER_COMPANY_INFO), RECEIVE_COMMAND(PACKET_SERVER_CLIENT_INFO), - RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD), - NULL, // PACKET_CLIENT_PASSWORD, + RECEIVE_COMMAND(PACKET_SERVER_NEED_GAME_PASSWORD), + RECEIVE_COMMAND(PACKET_SERVER_NEED_COMPANY_PASSWORD), + NULL, // PACKET_CLIENT_GAME_PASSWORD, + NULL, // PACKET_CLIENT_COMPANY_PASSWORD, RECEIVE_COMMAND(PACKET_SERVER_WELCOME), NULL, // PACKET_CLIENT_GETMAP, RECEIVE_COMMAND(PACKET_SERVER_WAIT), -- cgit v1.2.3-70-g09d2