diff options
author | smatz <smatz@openttd.org> | 2009-06-10 19:00:34 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2009-06-10 19:00:34 +0000 |
commit | 35635c62482bb7955d3f3633b5e22712a2039ce7 (patch) | |
tree | c2a0c8482b35b5a1326578bdbb8533e3d9d50e34 /src/network/network_client.cpp | |
parent | 3eb8f643fb17b34826370823cdc65d2aaf0958e4 (diff) | |
download | openttd-35635c62482bb7955d3f3633b5e22712a2039ce7.tar.xz |
(svn r16555) -Feature [FS#570]: ability to enter server and company password via command line when joining a server (based on patch by Progman, Ammler and planetmaker)
Diffstat (limited to 'src/network/network_client.cpp')
-rw-r--r-- | src/network/network_client.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index e31ecc6bc..ae1f59530 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -47,6 +47,11 @@ static uint8 _network_server_max_spectators; /** Who would we like to join as. */ CompanyID _network_join_as; +/** Login password from -p argument */ +const char *_network_join_server_password = NULL; +/** Company password from -P argument */ +const char *_network_join_company_password = NULL; + /** Make sure the unique ID length is the same as a md5 hash. */ assert_compile(NETWORK_UNIQUE_ID_LENGTH == 16 * 2 + 1); @@ -509,15 +514,22 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD) { NetworkPasswordType type = (NetworkPasswordType)p->Recv_uint8(); + const char *password = _network_join_server_password; + switch (type) { case NETWORK_COMPANY_PASSWORD: /* Initialize the password hash salting variables. */ _password_game_seed = p->Recv_uint32(); p->Recv_string(_password_server_unique_id, sizeof(_password_server_unique_id)); if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; - + password = _network_join_company_password; + /* FALL THROUGH */ case NETWORK_GAME_PASSWORD: - ShowNetworkNeedPassword(type); + if (StrEmpty(password)) { + ShowNetworkNeedPassword(type); + } else { + SEND_COMMAND(PACKET_CLIENT_PASSWORD)(type, password); + } return NETWORK_RECV_STATUS_OKAY; default: return NETWORK_RECV_STATUS_MALFORMED_PACKET; |