diff --git a/src/network/network.cpp b/src/network/network.cpp --- 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, bo } /** + * 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. */