|
|
@ -143,7 +143,7 @@ struct PacketWriter : SaveFilter {
|
|
|
|
/* We want to abort the saving when the socket is closed. */
|
|
|
|
/* We want to abort the saving when the socket is closed. */
|
|
|
|
if (this->cs == nullptr) SlError(STR_NETWORK_ERROR_LOSTCONNECTION);
|
|
|
|
if (this->cs == nullptr) SlError(STR_NETWORK_ERROR_LOSTCONNECTION);
|
|
|
|
|
|
|
|
|
|
|
|
if (this->current == nullptr) this->current = std::make_unique<Packet>(PACKET_SERVER_MAP_DATA, TCP_MTU);
|
|
|
|
if (this->current == nullptr) this->current = std::make_unique<Packet>(this->cs, PACKET_SERVER_MAP_DATA, TCP_MTU);
|
|
|
|
|
|
|
|
|
|
|
|
byte *bufe = buf + size;
|
|
|
|
byte *bufe = buf + size;
|
|
|
|
while (buf != bufe) {
|
|
|
|
while (buf != bufe) {
|
|
|
@ -152,7 +152,7 @@ struct PacketWriter : SaveFilter {
|
|
|
|
|
|
|
|
|
|
|
|
if (!this->current->CanWriteToPacket(1)) {
|
|
|
|
if (!this->current->CanWriteToPacket(1)) {
|
|
|
|
this->packets.push_back(std::move(this->current));
|
|
|
|
this->packets.push_back(std::move(this->current));
|
|
|
|
if (buf != bufe) this->current = std::make_unique<Packet>(PACKET_SERVER_MAP_DATA, TCP_MTU);
|
|
|
|
if (buf != bufe) this->current = std::make_unique<Packet>(this->cs, PACKET_SERVER_MAP_DATA, TCP_MTU);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -170,10 +170,10 @@ struct PacketWriter : SaveFilter {
|
|
|
|
if (this->current != nullptr) this->packets.push_back(std::move(this->current));
|
|
|
|
if (this->current != nullptr) this->packets.push_back(std::move(this->current));
|
|
|
|
|
|
|
|
|
|
|
|
/* Add a packet stating that this is the end to the queue. */
|
|
|
|
/* Add a packet stating that this is the end to the queue. */
|
|
|
|
this->packets.push_back(std::make_unique<Packet>(PACKET_SERVER_MAP_DONE));
|
|
|
|
this->packets.push_back(std::make_unique<Packet>(this->cs, PACKET_SERVER_MAP_DONE));
|
|
|
|
|
|
|
|
|
|
|
|
/* Fast-track the size to the client. */
|
|
|
|
/* Fast-track the size to the client. */
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_MAP_SIZE);
|
|
|
|
auto p = std::make_unique<Packet>(this->cs, PACKET_SERVER_MAP_SIZE);
|
|
|
|
p->Send_uint32((uint32_t)this->total_size);
|
|
|
|
p->Send_uint32((uint32_t)this->total_size);
|
|
|
|
this->packets.push_front(std::move(p));
|
|
|
|
this->packets.push_front(std::move(p));
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -324,7 +324,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendClientInfo(NetworkClientIn
|
|
|
|
Debug(net, 9, "client[{}] SendClientInfo(): client_id={}", this->client_id, ci->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendClientInfo(): client_id={}", this->client_id, ci->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
if (ci->client_id != INVALID_CLIENT_ID) {
|
|
|
|
if (ci->client_id != INVALID_CLIENT_ID) {
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_CLIENT_INFO);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_CLIENT_INFO);
|
|
|
|
p->Send_uint32(ci->client_id);
|
|
|
|
p->Send_uint32(ci->client_id);
|
|
|
|
p->Send_uint8 (ci->client_playas);
|
|
|
|
p->Send_uint8 (ci->client_playas);
|
|
|
|
p->Send_string(ci->client_name);
|
|
|
|
p->Send_string(ci->client_name);
|
|
|
@ -339,7 +339,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendGameInfo()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendGameInfo()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendGameInfo()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_GAME_INFO, TCP_MTU);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_GAME_INFO, TCP_MTU);
|
|
|
|
SerializeNetworkGameInfo(*p, GetCurrentNetworkServerGameInfo());
|
|
|
|
SerializeNetworkGameInfo(*p, GetCurrentNetworkServerGameInfo());
|
|
|
|
|
|
|
|
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
@ -356,7 +356,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendError(NetworkErrorCode err
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendError(): error={}", this->client_id, error);
|
|
|
|
Debug(net, 9, "client[{}] SendError(): error={}", this->client_id, error);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_ERROR);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_ERROR);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint8(error);
|
|
|
|
p->Send_uint8(error);
|
|
|
|
if (!reason.empty()) p->Send_string(reason);
|
|
|
|
if (!reason.empty()) p->Send_string(reason);
|
|
|
@ -401,7 +401,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNewGRFCheck()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendNewGRFCheck()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendNewGRFCheck()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_CHECK_NEWGRFS, TCP_MTU);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_CHECK_NEWGRFS, TCP_MTU);
|
|
|
|
const GRFConfig *c;
|
|
|
|
const GRFConfig *c;
|
|
|
|
uint grf_count = 0;
|
|
|
|
uint grf_count = 0;
|
|
|
|
|
|
|
|
|
|
|
@ -436,7 +436,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNeedGamePassword()
|
|
|
|
/* Reset 'lag' counters */
|
|
|
|
/* Reset 'lag' counters */
|
|
|
|
this->last_frame = this->last_frame_server = _frame_counter;
|
|
|
|
this->last_frame = this->last_frame_server = _frame_counter;
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_NEED_GAME_PASSWORD);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_NEED_GAME_PASSWORD);
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -459,7 +459,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNeedCompanyPassword()
|
|
|
|
/* Reset 'lag' counters */
|
|
|
|
/* Reset 'lag' counters */
|
|
|
|
this->last_frame = this->last_frame_server = _frame_counter;
|
|
|
|
this->last_frame = this->last_frame_server = _frame_counter;
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_NEED_COMPANY_PASSWORD);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_NEED_COMPANY_PASSWORD);
|
|
|
|
p->Send_uint32(_settings_game.game_creation.generation_seed);
|
|
|
|
p->Send_uint32(_settings_game.game_creation.generation_seed);
|
|
|
|
p->Send_string(_settings_client.network.network_id);
|
|
|
|
p->Send_string(_settings_client.network.network_id);
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
@ -481,7 +481,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendWelcome()
|
|
|
|
|
|
|
|
|
|
|
|
_network_game_info.clients_on++;
|
|
|
|
_network_game_info.clients_on++;
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_WELCOME);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_WELCOME);
|
|
|
|
p->Send_uint32(this->client_id);
|
|
|
|
p->Send_uint32(this->client_id);
|
|
|
|
p->Send_uint32(_settings_game.game_creation.generation_seed);
|
|
|
|
p->Send_uint32(_settings_game.game_creation.generation_seed);
|
|
|
|
p->Send_string(_settings_client.network.network_id);
|
|
|
|
p->Send_string(_settings_client.network.network_id);
|
|
|
@ -510,7 +510,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendWait()
|
|
|
|
if (new_cs->GetInfo()->join_date < this->GetInfo()->join_date || (new_cs->GetInfo()->join_date == this->GetInfo()->join_date && new_cs->client_id < this->client_id)) waiting++;
|
|
|
|
if (new_cs->GetInfo()->join_date < this->GetInfo()->join_date || (new_cs->GetInfo()->join_date == this->GetInfo()->join_date && new_cs->client_id < this->client_id)) waiting++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_WAIT);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_WAIT);
|
|
|
|
p->Send_uint8(waiting);
|
|
|
|
p->Send_uint8(waiting);
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
@ -560,7 +560,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMap()
|
|
|
|
this->savegame = std::make_shared<PacketWriter>(this);
|
|
|
|
this->savegame = std::make_shared<PacketWriter>(this);
|
|
|
|
|
|
|
|
|
|
|
|
/* Now send the _frame_counter and how many packets are coming */
|
|
|
|
/* Now send the _frame_counter and how many packets are coming */
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_MAP_BEGIN);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_MAP_BEGIN);
|
|
|
|
p->Send_uint32(_frame_counter);
|
|
|
|
p->Send_uint32(_frame_counter);
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
|
|
|
|
|
|
|
@ -603,7 +603,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendJoin(ClientID client_id)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendJoin(): client_id={}", this->client_id, client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendJoin(): client_id={}", this->client_id, client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_JOIN);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_JOIN);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
|
|
|
|
|
|
|
@ -614,7 +614,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendJoin(ClientID client_id)
|
|
|
|
/** Tell the client that they may run to a particular frame. */
|
|
|
|
/** Tell the client that they may run to a particular frame. */
|
|
|
|
NetworkRecvStatus ServerNetworkGameSocketHandler::SendFrame()
|
|
|
|
NetworkRecvStatus ServerNetworkGameSocketHandler::SendFrame()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_FRAME);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_FRAME);
|
|
|
|
p->Send_uint32(_frame_counter);
|
|
|
|
p->Send_uint32(_frame_counter);
|
|
|
|
p->Send_uint32(_frame_counter_max);
|
|
|
|
p->Send_uint32(_frame_counter_max);
|
|
|
|
#ifdef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
|
|
|
#ifdef ENABLE_NETWORK_SYNC_EVERY_FRAME
|
|
|
@ -639,7 +639,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendSync()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendSync(), frame_counter={}, sync_seed_1={}", this->client_id, _frame_counter, _sync_seed_1);
|
|
|
|
Debug(net, 9, "client[{}] SendSync(), frame_counter={}, sync_seed_1={}", this->client_id, _frame_counter, _sync_seed_1);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_SYNC);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_SYNC);
|
|
|
|
p->Send_uint32(_frame_counter);
|
|
|
|
p->Send_uint32(_frame_counter);
|
|
|
|
p->Send_uint32(_sync_seed_1);
|
|
|
|
p->Send_uint32(_sync_seed_1);
|
|
|
|
|
|
|
|
|
|
|
@ -658,7 +658,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendCommand(const CommandPacke
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendCommand(): cmd={}", this->client_id, cp.cmd);
|
|
|
|
Debug(net, 9, "client[{}] SendCommand(): cmd={}", this->client_id, cp.cmd);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_COMMAND);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_COMMAND);
|
|
|
|
|
|
|
|
|
|
|
|
this->NetworkGameSocketHandler::SendCommand(*p, cp);
|
|
|
|
this->NetworkGameSocketHandler::SendCommand(*p, cp);
|
|
|
|
p->Send_uint32(cp.frame);
|
|
|
|
p->Send_uint32(cp.frame);
|
|
|
@ -682,7 +682,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendChat(NetworkAction action,
|
|
|
|
|
|
|
|
|
|
|
|
if (this->status < STATUS_PRE_ACTIVE) return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
if (this->status < STATUS_PRE_ACTIVE) return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_CHAT);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_CHAT);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint8 (action);
|
|
|
|
p->Send_uint8 (action);
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint32(client_id);
|
|
|
@ -707,7 +707,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendExternalChat(const std::st
|
|
|
|
|
|
|
|
|
|
|
|
if (this->status < STATUS_PRE_ACTIVE) return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
if (this->status < STATUS_PRE_ACTIVE) return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_EXTERNAL_CHAT);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_EXTERNAL_CHAT);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_string(source);
|
|
|
|
p->Send_string(source);
|
|
|
|
p->Send_uint16(colour);
|
|
|
|
p->Send_uint16(colour);
|
|
|
@ -727,7 +727,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendErrorQuit(ClientID client_
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendErrorQuit(): client_id={}, errorno={}", this->client_id, client_id, errorno);
|
|
|
|
Debug(net, 9, "client[{}] SendErrorQuit(): client_id={}, errorno={}", this->client_id, client_id, errorno);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_ERROR_QUIT);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_ERROR_QUIT);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint8 (errorno);
|
|
|
|
p->Send_uint8 (errorno);
|
|
|
@ -744,7 +744,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendQuit(ClientID client_id)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendQuit(): client_id={}", this->client_id, client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendQuit(): client_id={}", this->client_id, client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_QUIT);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_QUIT);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
|
|
|
|
|
|
|
@ -757,7 +757,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendShutdown()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendShutdown()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendShutdown()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_SHUTDOWN);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_SHUTDOWN);
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -767,7 +767,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendNewGame()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendNewGame()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendNewGame()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_NEWGAME);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_NEWGAME);
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
this->SendPacket(std::move(p));
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
return NETWORK_RECV_STATUS_OKAY;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -781,7 +781,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendRConResult(uint16_t colour
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendRConResult()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendRConResult()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_RCON);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_RCON);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint16(colour);
|
|
|
|
p->Send_uint16(colour);
|
|
|
|
p->Send_string(command);
|
|
|
|
p->Send_string(command);
|
|
|
@ -798,7 +798,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendMove(ClientID client_id, C
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendMove(): client_id={}", this->client_id, client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendMove(): client_id={}", this->client_id, client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_MOVE);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_MOVE);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint32(client_id);
|
|
|
|
p->Send_uint8(company_id);
|
|
|
|
p->Send_uint8(company_id);
|
|
|
@ -811,7 +811,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendCompanyUpdate()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendCompanyUpdate()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendCompanyUpdate()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_COMPANY_UPDATE);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_COMPANY_UPDATE);
|
|
|
|
|
|
|
|
|
|
|
|
static_assert(sizeof(_network_company_passworded) <= sizeof(uint16_t));
|
|
|
|
static_assert(sizeof(_network_company_passworded) <= sizeof(uint16_t));
|
|
|
|
p->Send_uint16(_network_company_passworded);
|
|
|
|
p->Send_uint16(_network_company_passworded);
|
|
|
@ -824,7 +824,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendConfigUpdate()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Debug(net, 9, "client[{}] SendConfigUpdate()", this->client_id);
|
|
|
|
Debug(net, 9, "client[{}] SendConfigUpdate()", this->client_id);
|
|
|
|
|
|
|
|
|
|
|
|
auto p = std::make_unique<Packet>(PACKET_SERVER_CONFIG_UPDATE);
|
|
|
|
auto p = std::make_unique<Packet>(this, PACKET_SERVER_CONFIG_UPDATE);
|
|
|
|
|
|
|
|
|
|
|
|
p->Send_uint8(_settings_client.network.max_companies);
|
|
|
|
p->Send_uint8(_settings_client.network.max_companies);
|
|
|
|
p->Send_string(_settings_client.network.server_name);
|
|
|
|
p->Send_string(_settings_client.network.server_name);
|
|
|
|