summaryrefslogtreecommitdiff
path: root/src/network/network_coordinator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/network_coordinator.cpp')
-rw-r--r--src/network/network_coordinator.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/network/network_coordinator.cpp b/src/network/network_coordinator.cpp
index 8bd81b6f6..22b303f00 100644
--- a/src/network/network_coordinator.cpp
+++ b/src/network/network_coordinator.cpp
@@ -94,8 +94,8 @@ bool ClientNetworkCoordinatorSocketHandler::Receive_GC_ERROR(Packet *p)
SetDParamStr(0, detail);
ShowErrorMessage(STR_NETWORK_ERROR_COORDINATOR_REGISTRATION_FAILED, STR_JUST_RAW_STRING, WL_ERROR);
- /* To prevent that we constantly try to reconnect, switch to private game. */
- _settings_client.network.server_advertise = false;
+ /* To prevent that we constantly try to reconnect, switch to local game. */
+ _settings_client.network.server_game_type = SERVER_GAME_TYPE_LOCAL;
this->CloseConnection();
return false;
@@ -153,9 +153,18 @@ bool ClientNetworkCoordinatorSocketHandler::Receive_GC_REGISTER_ACK(Packet *p)
default: connection_type = "Unknown"; break; // Should never happen, but don't fail if it does.
}
+ std::string game_type;
+ switch (_settings_client.network.server_game_type) {
+ case SERVER_GAME_TYPE_INVITE_ONLY: game_type = "Invite only"; break;
+ case SERVER_GAME_TYPE_PUBLIC: game_type = "Public"; break;
+
+ case SERVER_GAME_TYPE_LOCAL: // Impossible to register local servers.
+ default: game_type = "Unknown"; break; // Should never happen, but don't fail if it does.
+ }
+
Debug(net, 3, "----------------------------------------");
Debug(net, 3, "Your server is now registered with the Game Coordinator:");
- Debug(net, 3, " Game type: Public");
+ Debug(net, 3, " Game type: {}", game_type);
Debug(net, 3, " Connection type: {}", connection_type);
Debug(net, 3, " Invite code: {}", _network_server_invite_code);
Debug(net, 3, "----------------------------------------");
@@ -298,7 +307,7 @@ void ClientNetworkCoordinatorSocketHandler::Register()
Packet *p = new Packet(PACKET_COORDINATOR_SERVER_REGISTER);
p->Send_uint8(NETWORK_COORDINATOR_VERSION);
- p->Send_uint8(SERVER_GAME_TYPE_PUBLIC);
+ p->Send_uint8(_settings_client.network.server_game_type);
p->Send_uint16(_settings_client.network.server_port);
if (_settings_client.network.server_invite_code.empty() || _settings_client.network.server_invite_code_secret.empty()) {
p->Send_string("");
@@ -467,7 +476,7 @@ void ClientNetworkCoordinatorSocketHandler::CloseAllTokens()
void ClientNetworkCoordinatorSocketHandler::SendReceive()
{
/* Private games are not listed via the Game Coordinator. */
- if (_network_server && !_settings_client.network.server_advertise) {
+ if (_network_server && _settings_client.network.server_game_type == SERVER_GAME_TYPE_LOCAL) {
if (this->sock != INVALID_SOCKET) {
this->CloseConnection();
}