Merge tag '14.0-beta3' into jgrpp
# Conflicts: # regression/regression/result.txt # src/industrytype.h # src/network/core/config.h # src/network/core/network_game_info.cpp # src/network/core/network_game_info.h # src/network/core/packet.cpp # src/network/core/packet.h # src/network/core/tcp.cpp # src/network/core/tcp.h # src/network/core/tcp_admin.cpp # src/network/core/tcp_content.cpp # src/network/core/tcp_coordinator.cpp # src/network/core/tcp_game.cpp # src/network/core/tcp_game.h # src/network/core/tcp_turn.cpp # src/network/core/udp.cpp # src/network/core/udp.h # src/network/network_admin.cpp # src/network/network_client.cpp # src/network/network_client.h # src/network/network_command.cpp # src/network/network_content.cpp # src/network/network_internal.h # src/network/network_query.cpp # src/network/network_query.h # src/network/network_server.cpp # src/network/network_server.h # src/network/network_turn.cpp # src/network/network_udp.cpp # src/rail_gui.cpp # src/road_gui.cpp
This commit is contained in:
@@ -89,19 +89,19 @@ struct PacketReader : LoadFilter {
|
||||
* Add a packet to this buffer.
|
||||
* @param p The packet to add.
|
||||
*/
|
||||
void AddPacket(Packet *p)
|
||||
void AddPacket(Packet &p)
|
||||
{
|
||||
assert(this->read_bytes == 0);
|
||||
p->TransferOutWithLimit(TransferOutMemCopy, this->bufe - this->buf, this);
|
||||
p.TransferOutWithLimit(TransferOutMemCopy, this->bufe - this->buf, this);
|
||||
|
||||
/* Did everything fit in the current chunk, then we're done. */
|
||||
if (p->RemainingBytesToTransfer() == 0) return;
|
||||
if (p.RemainingBytesToTransfer() == 0) return;
|
||||
|
||||
/* Allocate a new chunk and add the remaining data. */
|
||||
this->blocks.push_back(this->buf = CallocT<byte>(CHUNK));
|
||||
this->bufe = this->buf + CHUNK;
|
||||
|
||||
p->TransferOutWithLimit(TransferOutMemCopy, this->bufe - this->buf, this);
|
||||
p.TransferOutWithLimit(TransferOutMemCopy, this->bufe - this->buf, this);
|
||||
}
|
||||
|
||||
size_t Read(byte *rbuf, size_t size) override
|
||||
@@ -458,7 +458,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendKeyPasswordPacket(PacketTy
|
||||
static_assert(std::tuple_size<decltype(ss.shared_data)>::value == 64);
|
||||
crypto_aead_lock(message.data(), mac.data(), ss.shared_data.data(), nonce.data(), keys.x25519_pub_key.data(), keys.x25519_pub_key.size(), message.data(), message.size());
|
||||
|
||||
Packet *p = new Packet(packet_type, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(packet_type, TCP_MTU);
|
||||
static_assert(std::tuple_size<decltype(keys.x25519_pub_key)>::value == 32);
|
||||
p->Send_binary(keys.x25519_pub_key);
|
||||
p->Send_binary(nonce);
|
||||
@@ -467,13 +467,12 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendKeyPasswordPacket(PacketTy
|
||||
|
||||
_next_key_message_id++;
|
||||
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
/***********
|
||||
* Sending functions
|
||||
* DEF_CLIENT_SEND_COMMAND has no parameters
|
||||
************/
|
||||
|
||||
/** Tell the server we would like to join. */
|
||||
@@ -483,21 +482,21 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendJoin()
|
||||
_network_join_status = NETWORK_JOIN_STATUS_AUTHORIZING;
|
||||
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN);
|
||||
|
||||
Packet *p = new Packet(PACKET_CLIENT_JOIN, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_JOIN);
|
||||
p->Send_string(_openttd_revision);
|
||||
p->Send_uint32(_openttd_newgrf_version);
|
||||
p->Send_string(_settings_client.network.client_name); // Client name
|
||||
p->Send_uint8 (_network_join.company); // PlayAs
|
||||
p->Send_uint8 (0); // Used to be language
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
/** Tell the server we got all the NewGRFs. */
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendNewGRFsOk()
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_NEWGRFS_CHECKED, SHRT_MAX);
|
||||
my_client->SendPacket(p);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_NEWGRFS_CHECKED);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -517,9 +516,9 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendGamePassword(const std::st
|
||||
*/
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendCompanyPassword(const std::string &password)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_COMPANY_PASSWORD, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_COMPANY_PASSWORD, TCP_MTU);
|
||||
p->Send_string(GenerateCompanyPasswordHash(password, _company_password_server_id, _company_password_game_seed));
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -530,8 +529,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendCompanyPassword(const std:
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendSettingsPassword(const std::string &password)
|
||||
{
|
||||
if (password.empty()) {
|
||||
Packet *p = new Packet(PACKET_CLIENT_SETTINGS_PASSWORD, SHRT_MAX);
|
||||
my_client->SendPacket(p);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_SETTINGS_PASSWORD, TCP_MTU);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
} else {
|
||||
NetworkSharedSecrets ss;
|
||||
@@ -544,13 +543,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendGetMap()
|
||||
{
|
||||
my_client->status = STATUS_MAP_WAIT;
|
||||
|
||||
Packet *p = new Packet(PACKET_CLIENT_GETMAP, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_GETMAP, TCP_MTU);
|
||||
#if defined(WITH_ZSTD)
|
||||
p->Send_bool(true);
|
||||
#else
|
||||
p->Send_bool(false);
|
||||
#endif
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -559,19 +558,19 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendMapOk()
|
||||
{
|
||||
my_client->status = STATUS_ACTIVE;
|
||||
|
||||
Packet *p = new Packet(PACKET_CLIENT_MAP_OK, SHRT_MAX);
|
||||
my_client->SendPacket(p);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_MAP_OK, TCP_MTU);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
/** Send an acknowledgement from the server's ticks. */
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendAck()
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_ACK, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_ACK, TCP_MTU);
|
||||
|
||||
p->Send_uint32(_frame_counter);
|
||||
p->Send_uint8 (my_client->token);
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -579,12 +578,12 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendAck()
|
||||
* Send a command to the server.
|
||||
* @param cp The command to send.
|
||||
*/
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendCommand(const CommandPacket *cp)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendCommand(const CommandPacket &cp)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_COMMAND, SHRT_MAX);
|
||||
my_client->NetworkGameSocketHandler::SendCommand(p, cp);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_COMMAND, TCP_MTU);
|
||||
my_client->NetworkGameSocketHandler::SendCommand(*p, cp);
|
||||
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -592,28 +591,28 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendCommand(const CommandPacke
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendChat(NetworkAction action, DestType type, int dest, const std::string &msg, NetworkTextMessageData data)
|
||||
{
|
||||
if (!my_client) return NETWORK_RECV_STATUS_CLIENT_QUIT;
|
||||
Packet *p = new Packet(PACKET_CLIENT_CHAT, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_CHAT, TCP_MTU);
|
||||
|
||||
p->Send_uint8 (action);
|
||||
p->Send_uint8 (type);
|
||||
p->Send_uint32(dest);
|
||||
p->Send_string(msg);
|
||||
data.send(p);
|
||||
data.send(*p);
|
||||
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
/** Send an error-packet over the network */
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendError(NetworkErrorCode errorno, NetworkRecvStatus recvstatus)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_ERROR, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_ERROR, TCP_MTU);
|
||||
|
||||
p->Send_uint8(errorno);
|
||||
p->Send_uint8(recvstatus);
|
||||
p->Send_uint8(my_client->status);
|
||||
p->Send_uint8(my_client->last_pkt_type);
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -621,11 +620,11 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendError(NetworkErrorCode err
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendDesyncLog(const std::string &log)
|
||||
{
|
||||
for (size_t offset = 0; offset < log.size();) {
|
||||
Packet *p = new Packet(PACKET_CLIENT_DESYNC_LOG, SHRT_MAX);
|
||||
size_t size = std::min<size_t>(log.size() - offset, SHRT_MAX - 2 - p->Size());
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_DESYNC_LOG, TCP_MTU);
|
||||
size_t size = std::min<size_t>(log.size() - offset, TCP_MTU - 2 - p->Size());
|
||||
p->Send_uint16((uint16_t)size);
|
||||
p->Send_binary((const byte *)(log.data() + offset), size);
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
|
||||
offset += size;
|
||||
}
|
||||
@@ -635,12 +634,12 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendDesyncLog(const std::strin
|
||||
/** Send an error-packet over the network */
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendDesyncMessage(const char *msg)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_DESYNC_MSG, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_DESYNC_MSG, TCP_MTU);
|
||||
p->Send_uint32(EconTime::CurDate().base());
|
||||
p->Send_uint16(EconTime::CurDateFract());
|
||||
p->Send_uint8(TickSkipCounter());
|
||||
p->Send_string(msg);
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -659,7 +658,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendDesyncSyncData()
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
Packet *p = new Packet(PACKET_CLIENT_DESYNC_SYNC_DATA, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_DESYNC_SYNC_DATA, TCP_MTU);
|
||||
p->Send_uint32((uint32_t)_network_sync_record_counts.size());
|
||||
uint32_t offset = 0;
|
||||
for (uint32_t count : _network_sync_record_counts) {
|
||||
@@ -672,7 +671,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendDesyncSyncData()
|
||||
}
|
||||
offset += count;
|
||||
}
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -682,10 +681,10 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendDesyncSyncData()
|
||||
*/
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetPassword(const std::string &password)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_SET_PASSWORD, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_SET_PASSWORD, TCP_MTU);
|
||||
|
||||
p->Send_string(GenerateCompanyPasswordHash(password, _company_password_server_id, _company_password_game_seed));
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -695,10 +694,10 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetPassword(const std::str
|
||||
*/
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetName(const std::string &name)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_SET_NAME, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_SET_NAME, TCP_MTU);
|
||||
|
||||
p->Send_string(name);
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -707,9 +706,9 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendSetName(const std::string
|
||||
*/
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendQuit()
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_QUIT, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_QUIT, TCP_MTU);
|
||||
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -730,10 +729,10 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::SendRCon(const std::string &pa
|
||||
*/
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::SendMove(CompanyID company, const std::string &password)
|
||||
{
|
||||
Packet *p = new Packet(PACKET_CLIENT_MOVE, SHRT_MAX);
|
||||
auto p = std::make_unique<Packet>(PACKET_CLIENT_MOVE, TCP_MTU);
|
||||
p->Send_uint8(company);
|
||||
p->Send_string(GenerateCompanyPasswordHash(password, _company_password_server_id, _company_password_game_seed));
|
||||
my_client->SendPacket(p);
|
||||
my_client->SendPacket(std::move(p));
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
@@ -749,13 +748,12 @@ bool ClientNetworkGameSocketHandler::IsConnected()
|
||||
|
||||
/***********
|
||||
* Receiving functions
|
||||
* DEF_CLIENT_RECEIVE_COMMAND has parameter: Packet *p
|
||||
************/
|
||||
|
||||
extern bool SafeLoad(const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, GameMode newgm, Subdirectory subdir,
|
||||
std::shared_ptr<struct LoadFilter> lf = nullptr, std::string *error_detail = nullptr);
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FULL(Packet *)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FULL(Packet &)
|
||||
{
|
||||
/* We try to join a server which is full */
|
||||
ShowErrorMessage(STR_NETWORK_ERROR_SERVER_FULL, INVALID_STRING_ID, WL_CRITICAL);
|
||||
@@ -763,7 +761,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FULL(Packet *)
|
||||
return NETWORK_RECV_STATUS_SERVER_FULL;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_BANNED(Packet *)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_BANNED(Packet &)
|
||||
{
|
||||
/* We try to join a server where we are banned */
|
||||
ShowErrorMessage(STR_NETWORK_ERROR_SERVER_BANNED, INVALID_STRING_ID, WL_CRITICAL);
|
||||
@@ -774,13 +772,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_BANNED(Packet *
|
||||
/* This packet contains info about the client (playas and name)
|
||||
* as client we save this in NetworkClientInfo, linked via 'client_id'
|
||||
* which is always an unique number on a server. */
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Packet &p)
|
||||
{
|
||||
NetworkClientInfo *ci;
|
||||
ClientID client_id = (ClientID)p->Recv_uint32();
|
||||
CompanyID playas = (CompanyID)p->Recv_uint8();
|
||||
ClientID client_id = (ClientID)p.Recv_uint32();
|
||||
CompanyID playas = (CompanyID)p.Recv_uint8();
|
||||
|
||||
std::string name = p->Recv_string(NETWORK_NAME_LENGTH);
|
||||
std::string name = p.Recv_string(NETWORK_NAME_LENGTH);
|
||||
|
||||
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
if (this->HasClientQuit()) return NETWORK_RECV_STATUS_CLIENT_QUIT;
|
||||
@@ -830,7 +828,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet &p)
|
||||
{
|
||||
static const StringID network_error_strings[] = {
|
||||
STR_NETWORK_ERROR_LOSTCONNECTION, // NETWORK_ERROR_GENERAL
|
||||
@@ -857,13 +855,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p
|
||||
};
|
||||
static_assert(lengthof(network_error_strings) == NETWORK_ERROR_END);
|
||||
|
||||
NetworkErrorCode error = (NetworkErrorCode)p->Recv_uint8();
|
||||
NetworkErrorCode error = (NetworkErrorCode)p.Recv_uint8();
|
||||
|
||||
StringID err = STR_NETWORK_ERROR_LOSTCONNECTION;
|
||||
if (error < (ptrdiff_t)lengthof(network_error_strings)) err = network_error_strings[error];
|
||||
/* In case of kicking a client, we assume there is a kick message in the packet if we can read one byte */
|
||||
if (error == NETWORK_ERROR_KICKED && p->CanReadFromPacket(1)) {
|
||||
SetDParamStr(0, p->Recv_string(NETWORK_CHAT_LENGTH));
|
||||
if (error == NETWORK_ERROR_KICKED && p.CanReadFromPacket(1)) {
|
||||
SetDParamStr(0, p.Recv_string(NETWORK_CHAT_LENGTH));
|
||||
ShowErrorMessage(err, STR_NETWORK_ERROR_KICK_MESSAGE, WL_CRITICAL);
|
||||
} else {
|
||||
ShowErrorMessage(err, INVALID_STRING_ID, WL_CRITICAL);
|
||||
@@ -875,18 +873,18 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p
|
||||
return NETWORK_RECV_STATUS_SERVER_ERROR;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(Packet &p)
|
||||
{
|
||||
if (this->status != STATUS_JOIN) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
uint grf_count = p->Recv_uint32();
|
||||
uint grf_count = p.Recv_uint32();
|
||||
if (grf_count > MAX_NON_STATIC_GRF_COUNT) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
NetworkRecvStatus ret = NETWORK_RECV_STATUS_OKAY;
|
||||
|
||||
/* Check all GRFs */
|
||||
for (; grf_count > 0; grf_count--) {
|
||||
GRFIdentifier c;
|
||||
DeserializeGRFIdentifier(p, &c);
|
||||
DeserializeGRFIdentifier(p, c);
|
||||
|
||||
/* Check whether we know this GRF */
|
||||
const GRFConfig *f = FindGRFConfig(c.grfid, FGCM_EXACT, &c.md5sum);
|
||||
@@ -909,14 +907,14 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(P
|
||||
return ret;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_GAME_PASSWORD(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_GAME_PASSWORD(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_JOIN || this->status >= STATUS_AUTH_GAME) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
this->status = STATUS_AUTH_GAME;
|
||||
|
||||
static_assert(_server_x25519_pub_key.size() == 32);
|
||||
p->Recv_binary(_server_x25519_pub_key);
|
||||
_password_server_id = p->Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
p.Recv_binary(_server_x25519_pub_key);
|
||||
_password_server_id = p.Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
if (this->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
if (!_network_join.server_password.empty()) {
|
||||
@@ -928,13 +926,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_GAME_PASSW
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PASSWORD(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PASSWORD(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_JOIN || this->status >= STATUS_AUTH_COMPANY) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
this->status = STATUS_AUTH_COMPANY;
|
||||
|
||||
_company_password_game_seed = p->Recv_uint32();
|
||||
_company_password_server_id = p->Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
_company_password_game_seed = p.Recv_uint32();
|
||||
_company_password_server_id = p.Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
if (this->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
if (!_network_join.company_password.empty()) {
|
||||
@@ -946,38 +944,38 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PA
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_WELCOME(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_WELCOME(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_JOIN || this->status >= STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
this->status = STATUS_AUTHORIZED;
|
||||
|
||||
_network_own_client_id = (ClientID)p->Recv_uint32();
|
||||
_network_own_client_id = (ClientID)p.Recv_uint32();
|
||||
|
||||
/* Initialize the password hash salting variables, even if they were previously. */
|
||||
_company_password_game_seed = p->Recv_uint32();
|
||||
_company_password_game_seed = p.Recv_uint32();
|
||||
static_assert(_server_x25519_pub_key.size() == 32);
|
||||
p->Recv_binary(_server_x25519_pub_key);
|
||||
_password_server_id = p->Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
_company_password_server_id = p->Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
p.Recv_binary(_server_x25519_pub_key);
|
||||
_password_server_id = p.Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
_company_password_server_id = p.Recv_string(NETWORK_SERVER_ID_LENGTH);
|
||||
|
||||
/* Start receiving the map */
|
||||
return SendGetMap();
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_WAIT(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_WAIT(Packet &p)
|
||||
{
|
||||
/* We set the internal wait state when requesting the map. */
|
||||
if (this->status != STATUS_MAP_WAIT) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
/* But... only now we set the join status to waiting, instead of requesting. */
|
||||
_network_join_status = NETWORK_JOIN_STATUS_WAITING;
|
||||
_network_join_waiting = p->Recv_uint8();
|
||||
_network_join_waiting = p.Recv_uint8();
|
||||
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN);
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_AUTHORIZED || this->status >= STATUS_MAP) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
this->status = STATUS_MAP;
|
||||
@@ -986,7 +984,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(Packe
|
||||
|
||||
this->savegame = std::make_shared<PacketReader>();
|
||||
|
||||
_frame_counter = _frame_counter_server = _frame_counter_max = p->Recv_uint32();
|
||||
_frame_counter = _frame_counter_server = _frame_counter_max = p.Recv_uint32();
|
||||
|
||||
_network_join_bytes = 0;
|
||||
_network_join_bytes_total = 0;
|
||||
@@ -997,18 +995,18 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(Packe
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_SIZE(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_SIZE(Packet &p)
|
||||
{
|
||||
if (this->status != STATUS_MAP) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
if (this->savegame == nullptr) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
_network_join_bytes_total = p->Recv_uint32();
|
||||
_network_join_bytes_total = p.Recv_uint32();
|
||||
SetWindowDirty(WC_NETWORK_STATUS_WINDOW, WN_NETWORK_STATUS_WINDOW_JOIN);
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DATA(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DATA(Packet &p)
|
||||
{
|
||||
if (this->status != STATUS_MAP) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
if (this->savegame == nullptr) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
@@ -1022,7 +1020,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DATA(Packet
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet *)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet &)
|
||||
{
|
||||
if (this->status != STATUS_MAP) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
if (this->savegame == nullptr) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
@@ -1080,24 +1078,24 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(Packet
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(Packet &p)
|
||||
{
|
||||
if (this->status == STATUS_CLOSING) return NETWORK_RECV_STATUS_OKAY;
|
||||
if (this->status != STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
_frame_counter_server = p->Recv_uint32();
|
||||
_frame_counter_max = p->Recv_uint32();
|
||||
_frame_counter_server = p.Recv_uint32();
|
||||
_frame_counter_max = p.Recv_uint32();
|
||||
#ifdef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
||||
/* Test if the server supports this option
|
||||
* and if we are at the frame the server is */
|
||||
if (p->CanReadFromPacket(4 + 8)) {
|
||||
if (p.CanReadFromPacket(4 + 8)) {
|
||||
_sync_frame = _frame_counter_server;
|
||||
_sync_seed_1 = p->Recv_uint32();
|
||||
_sync_state_checksum = p->Recv_uint64();
|
||||
_sync_seed_1 = p.Recv_uint32();
|
||||
_sync_state_checksum = p.Recv_uint64();
|
||||
}
|
||||
#endif
|
||||
/* Receive the token. */
|
||||
if (p->CanReadFromPacket(sizeof(uint8_t))) this->token = p->Recv_uint8();
|
||||
if (p.CanReadFromPacket(sizeof(uint8_t))) this->token = p.Recv_uint8();
|
||||
|
||||
DEBUG(net, 7, "Received FRAME %d", _frame_counter_server);
|
||||
|
||||
@@ -1112,39 +1110,39 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(Packet *p
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SYNC(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SYNC(Packet &p)
|
||||
{
|
||||
if (this->status == STATUS_CLOSING) return NETWORK_RECV_STATUS_OKAY;
|
||||
if (this->status != STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
_sync_frame = p->Recv_uint32();
|
||||
_sync_seed_1 = p->Recv_uint32();
|
||||
_sync_state_checksum = p->Recv_uint64();
|
||||
_sync_frame = p.Recv_uint32();
|
||||
_sync_seed_1 = p.Recv_uint32();
|
||||
_sync_state_checksum = p.Recv_uint64();
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_COMMAND(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_COMMAND(Packet &p)
|
||||
{
|
||||
if (this->status == STATUS_CLOSING) return NETWORK_RECV_STATUS_OKAY;
|
||||
if (this->status != STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
CommandPacket cp;
|
||||
const char *err = this->ReceiveCommand(p, &cp);
|
||||
cp.frame = p->Recv_uint32();
|
||||
cp.my_cmd = p->Recv_bool();
|
||||
const char *err = this->ReceiveCommand(p, cp);
|
||||
cp.frame = p.Recv_uint32();
|
||||
cp.my_cmd = p.Recv_bool();
|
||||
|
||||
if (err != nullptr) {
|
||||
IConsolePrintF(CC_ERROR, "WARNING: %s from server, dropping...", err);
|
||||
return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
}
|
||||
|
||||
this->incoming_queue.Append(std::move(cp));
|
||||
this->incoming_queue.push_back(std::move(cp));
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet &p)
|
||||
{
|
||||
if (this->status == STATUS_CLOSING) return NETWORK_RECV_STATUS_OKAY;
|
||||
if (this->status != STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
@@ -1152,10 +1150,10 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p)
|
||||
std::string name;
|
||||
const NetworkClientInfo *ci = nullptr, *ci_to;
|
||||
|
||||
NetworkAction action = (NetworkAction)p->Recv_uint8();
|
||||
ClientID client_id = (ClientID)p->Recv_uint32();
|
||||
bool self_send = p->Recv_bool();
|
||||
std::string msg = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||
NetworkAction action = (NetworkAction)p.Recv_uint8();
|
||||
ClientID client_id = (ClientID)p.Recv_uint32();
|
||||
bool self_send = p.Recv_bool();
|
||||
std::string msg = p.Recv_string(NETWORK_CHAT_LENGTH);
|
||||
NetworkTextMessageData data;
|
||||
data.recv(p);
|
||||
|
||||
@@ -1199,14 +1197,14 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(Packet *p)
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_EXTERNAL_CHAT(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_EXTERNAL_CHAT(Packet &p)
|
||||
{
|
||||
if (this->status != STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
std::string source = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||
TextColour colour = (TextColour)p->Recv_uint16();
|
||||
std::string user = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||
std::string msg = p->Recv_string(NETWORK_CHAT_LENGTH);
|
||||
std::string source = p.Recv_string(NETWORK_CHAT_LENGTH);
|
||||
TextColour colour = (TextColour)p.Recv_uint16();
|
||||
std::string user = p.Recv_string(NETWORK_CHAT_LENGTH);
|
||||
std::string msg = p.Recv_string(NETWORK_CHAT_LENGTH);
|
||||
|
||||
if (!IsValidConsoleColour(colour)) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
@@ -1215,16 +1213,16 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_EXTERNAL_CHAT(P
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR_QUIT(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR_QUIT(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
ClientID client_id = (ClientID)p->Recv_uint32();
|
||||
ClientID client_id = (ClientID)p.Recv_uint32();
|
||||
if (client_id == _network_own_client_id) return NETWORK_RECV_STATUS_OKAY; // do not try to clear our own client info
|
||||
|
||||
NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(client_id);
|
||||
if (ci != nullptr) {
|
||||
NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, ci->client_name, "", GetNetworkErrorMsg((NetworkErrorCode)p->Recv_uint8()));
|
||||
NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, ci->client_name, "", GetNetworkErrorMsg((NetworkErrorCode)p.Recv_uint8()));
|
||||
delete ci;
|
||||
}
|
||||
|
||||
@@ -1233,20 +1231,20 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR_QUIT(Pack
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_DESYNC_LOG(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_DESYNC_LOG(Packet &p)
|
||||
{
|
||||
uint size = p->Recv_uint16();
|
||||
uint size = p.Recv_uint16();
|
||||
this->server_desync_log.resize(this->server_desync_log.size() + size);
|
||||
p->Recv_binary((byte *)(this->server_desync_log.data() + this->server_desync_log.size() - size), size);
|
||||
p.Recv_binary((byte *)(this->server_desync_log.data() + this->server_desync_log.size() - size), size);
|
||||
DEBUG(net, 2, "Received %u bytes of server desync log", size);
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_QUIT(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_QUIT(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
ClientID client_id = (ClientID)p->Recv_uint32();
|
||||
ClientID client_id = (ClientID)p.Recv_uint32();
|
||||
|
||||
NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(client_id);
|
||||
if (ci != nullptr) {
|
||||
@@ -1262,11 +1260,11 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_QUIT(Packet *p)
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_JOIN(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_JOIN(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
ClientID client_id = (ClientID)p->Recv_uint32();
|
||||
ClientID client_id = (ClientID)p.Recv_uint32();
|
||||
|
||||
NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(client_id);
|
||||
if (ci != nullptr) {
|
||||
@@ -1278,7 +1276,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_JOIN(Packet *p)
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SHUTDOWN(Packet *)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SHUTDOWN(Packet &)
|
||||
{
|
||||
/* Only when we're trying to join we really
|
||||
* care about the server shutting down. */
|
||||
@@ -1291,7 +1289,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SHUTDOWN(Packet
|
||||
return NETWORK_RECV_STATUS_SERVER_ERROR;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME(Packet *)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME(Packet &)
|
||||
{
|
||||
/* Only when we're trying to join we really
|
||||
* care about the server shutting down. */
|
||||
@@ -1308,21 +1306,21 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME(Packet
|
||||
return NETWORK_RECV_STATUS_SERVER_ERROR;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_RCON(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_RCON(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
if (!p->CanReadFromPacket(1)) {
|
||||
if (!p.CanReadFromPacket(1)) {
|
||||
IConsolePrint(CC_ERROR, "Access Denied");
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
std::array<uint8_t, 24> nonce;
|
||||
std::array<uint8_t, 16> mac;
|
||||
p->Recv_binary(nonce);
|
||||
p->Recv_binary(mac);
|
||||
p.Recv_binary(nonce);
|
||||
p.Recv_binary(mac);
|
||||
|
||||
std::vector<byte> message = p->Recv_binary(p->RemainingBytesToTransfer());
|
||||
std::vector<byte> message = p.Recv_binary(p.RemainingBytesToTransfer());
|
||||
|
||||
static_assert(std::tuple_size<decltype(NetworkSharedSecrets::shared_data)>::value == 64);
|
||||
if (crypto_aead_unlock(message.data(), mac.data(), this->last_rcon_shared_secrets.shared_data.data() + 32, nonce.data(), nullptr, 0, message.data(), message.size()) == 0) {
|
||||
@@ -1337,13 +1335,13 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_RCON(Packet *p)
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MOVE(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MOVE(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
/* Nothing more in this packet... */
|
||||
ClientID client_id = (ClientID)p->Recv_uint32();
|
||||
CompanyID company_id = (CompanyID)p->Recv_uint8();
|
||||
ClientID client_id = (ClientID)p.Recv_uint32();
|
||||
CompanyID company_id = (CompanyID)p.Recv_uint8();
|
||||
|
||||
if (client_id == 0) {
|
||||
/* definitely an invalid client id, debug message and do nothing. */
|
||||
@@ -1365,33 +1363,33 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_MOVE(Packet *p)
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
_network_server_max_companies = p->Recv_uint8();
|
||||
_network_server_name = p->Recv_string(NETWORK_NAME_LENGTH);
|
||||
_network_server_max_companies = p.Recv_uint8();
|
||||
_network_server_name = p.Recv_string(NETWORK_NAME_LENGTH);
|
||||
SetWindowClassesDirty(WC_CLIENT_LIST);
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_UPDATE(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_UPDATE(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
static_assert(sizeof(_network_company_passworded) <= sizeof(uint16_t));
|
||||
_network_company_passworded = p->Recv_uint16();
|
||||
_network_company_passworded = p.Recv_uint16();
|
||||
SetWindowClassesDirty(WC_COMPANY);
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SETTINGS_ACCESS(Packet *p)
|
||||
NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_SETTINGS_ACCESS(Packet &p)
|
||||
{
|
||||
if (this->status < STATUS_ACTIVE) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
|
||||
|
||||
_network_settings_access = p->Recv_bool();
|
||||
_network_settings_access = p.Recv_bool();
|
||||
|
||||
CloseWindowById(WC_CHEATS, 0);
|
||||
ReInitAllWindows(false);
|
||||
|
Reference in New Issue
Block a user