summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/network_client.cpp7
-rw-r--r--src/network/network_client.h6
-rw-r--r--src/network/network_server.cpp3
3 files changed, 7 insertions, 9 deletions
diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp
index 675807dec..4740849a0 100644
--- a/src/network/network_client.cpp
+++ b/src/network/network_client.cpp
@@ -385,7 +385,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendNewGRFsOk()
* Set the game password as requested.
* @param password The game password.
*/
-NetworkRecvStatus ClientNetworkGameSocketHandler::SendGamePassword(const char *password)
+NetworkRecvStatus ClientNetworkGameSocketHandler::SendGamePassword(const std::string &password)
{
Packet *p = new Packet(PACKET_CLIENT_GAME_PASSWORD);
p->Send_string(password);
@@ -799,9 +799,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_GAME_PASSW
if (this->status < STATUS_JOIN || this->status >= STATUS_AUTH_GAME) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
this->status = STATUS_AUTH_GAME;
- const char *password = _network_join.server_password;
- if (!StrEmpty(password)) {
- return SendGamePassword(password);
+ if (!_network_join.server_password.empty()) {
+ return SendGamePassword(_network_join.server_password);
}
ShowNetworkNeedPassword(NETWORK_GAME_PASSWORD);
diff --git a/src/network/network_client.h b/src/network/network_client.h
index c4dc4b1fd..baf4f5996 100644
--- a/src/network/network_client.h
+++ b/src/network/network_client.h
@@ -90,7 +90,7 @@ public:
static NetworkRecvStatus SendQuit();
static NetworkRecvStatus SendAck();
- static NetworkRecvStatus SendGamePassword(const char *password);
+ static NetworkRecvStatus SendGamePassword(const std::string &password);
static NetworkRecvStatus SendCompanyPassword(const std::string &password);
static NetworkRecvStatus SendChat(NetworkAction action, DestType type, int dest, const char *msg, int64 data);
@@ -114,10 +114,10 @@ void NetworkClientSetCompanyPassword(const std::string &password);
/** Information required to join a server. */
struct NetworkJoinInfo {
- NetworkJoinInfo() : company(COMPANY_SPECTATOR), server_password(nullptr) {}
+ NetworkJoinInfo() : company(COMPANY_SPECTATOR) {}
std::string connection_string; ///< The address of the server to join.
CompanyID company; ///< The company to join.
- const char *server_password; ///< The password of the server to join.
+ std::string server_password; ///< The password of the server to join.
std::string company_password; ///< The password of the company to join.
};
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp
index 4d35af116..314407348 100644
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -953,8 +953,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GAME_PASSWORD(P
return this->SendError(NETWORK_ERROR_NOT_EXPECTED);
}
- char password[NETWORK_PASSWORD_LENGTH];
- p->Recv_string(password, sizeof(password));
+ std::string password = p->Recv_string(NETWORK_PASSWORD_LENGTH);
/* Check game password. Allow joining if we cleared the password meanwhile */
if (!_settings_client.network.server_password.empty() &&