changeset 14996:9e5144f34303 draft

(svn r19608) -Fix: do not kick client if he entered password and the password was cleared meanwhile
author smatz <smatz@openttd.org>
date Sun, 11 Apr 2010 17:23:11 +0000
parents 807715f421a8
children eada19c57056
files src/network/network_server.cpp
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -754,8 +754,9 @@
 	char password[NETWORK_PASSWORD_LENGTH];
 	p->Recv_string(password, sizeof(password));
 
-	/* Check game password */
-	if (strcmp(password, _settings_client.network.server_password) != 0) {
+	/* Check game password. Allow joining if we cleared the password meanwhile */
+	if (!StrEmpty(_settings_client.network.server_password) &&
+			strcmp(password, _settings_client.network.server_password) != 0) {
 		/* Password is invalid */
 		return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD);
 	}
@@ -778,9 +779,10 @@
 	char password[NETWORK_PASSWORD_LENGTH];
 	p->Recv_string(password, sizeof(password));
 
-	/* Check company password */
+	/* Check company password. Allow joining if we cleared the password meanwhile */
 	const NetworkClientInfo *ci = cs->GetInfo();
-	if (strcmp(password, _network_company_states[ci->client_playas].password) != 0) {
+	if (!StrEmpty(_network_company_states[ci->client_playas].password) &&
+			strcmp(password, _network_company_states[ci->client_playas].password) != 0) {
 		/* Password is invalid */
 		return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD);
 	}