summaryrefslogtreecommitdiff
path: root/src/network/network.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/network.cpp')
-rw-r--r--src/network/network.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp
index f8138bbbc..d35fbe746 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -934,7 +934,7 @@ bool NetworkServerStart()
NetworkInitGameInfo();
- if (_settings_client.network.server_advertise) {
+ if (_settings_client.network.server_game_type != SERVER_GAME_TYPE_LOCAL) {
_network_coordinator_client.Register();
}
@@ -1000,6 +1000,29 @@ void NetworkDisconnect(bool blocking, bool close_admins)
}
/**
+ * The setting server_game_type was updated; possibly we need to take some
+ * action.
+ */
+void NetworkUpdateServerGameType()
+{
+ if (!_networking) return;
+
+ switch (_settings_client.network.server_game_type) {
+ case SERVER_GAME_TYPE_LOCAL:
+ _network_coordinator_client.CloseConnection();
+ break;
+
+ case SERVER_GAME_TYPE_INVITE_ONLY:
+ case SERVER_GAME_TYPE_PUBLIC:
+ _network_coordinator_client.Register();
+ break;
+
+ default:
+ NOT_REACHED();
+ }
+}
+
+/**
* Receives something from the network.
* @return true if everything went fine, false when the connection got closed.
*/