summaryrefslogtreecommitdiff
path: root/src/network/network_server.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-01-19 16:37:06 +0000
committerrubidium <rubidium@openttd.org>2011-01-19 16:37:06 +0000
commite54a1f67213218f52d8e27bce3aeda5d7dc16ad9 (patch)
tree8280435b51df9d855d217e9da1c973e5b134d455 /src/network/network_server.cpp
parente95718bf43a7d34868ee11002108ff0dd6e1ab2a (diff)
downloadopenttd-e54a1f67213218f52d8e27bce3aeda5d7dc16ad9.tar.xz
(svn r21853) -Codechange: HashCurrentCompanyPassword is only used by servers, so move it to network_server.* (dihedral)
Diffstat (limited to 'src/network/network_server.cpp')
-rw-r--r--src/network/network_server.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp
index c9fe3c181..83352f702 100644
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -1629,6 +1629,26 @@ bool NetworkServerChangeClientName(ClientID client_id, const char *new_name)
return true;
}
+/**
+ * Hash the current company password; used when the server 'company' sets his/her password.
+ * @param password The password to hash.
+ */
+void HashCurrentCompanyPassword(const char *password)
+{
+ uint32 password_game_seed;
+ char password_server_id[NETWORK_SERVER_ID_LENGTH];
+
+ password_game_seed = _settings_game.game_creation.generation_seed;
+ strecpy(password_server_id, _settings_client.network.network_id, lastof(password_server_id));
+
+ const char *new_pw = GenerateCompanyPasswordHash(password, password_server_id, password_game_seed);
+ strecpy(_network_company_states[_local_company].password, new_pw, lastof(_network_company_states[_local_company].password));
+
+ if (_network_server) {
+ NetworkServerUpdateCompanyPassworded(_local_company, !StrEmpty(_network_company_states[_local_company].password));
+ }
+}
+
/* Handle the local command-queue */
static void NetworkHandleCommandQueue(NetworkClientSocket *cs)
{