aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-05-01 15:37:05 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-05-01 15:37:05 +0200
commit5f96314dd428428269fc1df821561aad9934038d (patch)
treed7fd11b9cbc04236b19fb043b4113058cc0de01c
parentc259048067c3516f5e40acb8fb8983b64b1274b8 (diff)
Refuse to RmServer if players are connected to it
-rw-r--r--config.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/config.go b/config.go
index 812c5fd..93ee3fa 100644
--- a/config.go
+++ b/config.go
@@ -112,18 +112,28 @@ func AddServer(server Server) bool {
// RmServer deletes a Server from the Config at runtime.
// Any server can be deleted this way, not just the ones
// added using AddServer.
+// Returns true on success or if the server doesn't exist.
// WARNING: Reloading the configuration files re-adds the
// servers it contains that were deleted using this function.
-func RmServer(name string) {
+func RmServer(name string) bool {
configMu.Lock()
defer configMu.Unlock()
for i, srv := range config.Servers {
if srv.Name == name {
+ // Can't remove server if players are connected to it
+ for cc := range Clts() {
+ if cc.ServerName() == name {
+ return false
+ }
+ }
+
config.Servers = append(config.Servers[:i], config.Servers[1+i:]...)
- return
+ return true
}
}
+
+ return true
}
// FallbackServers returns a slice of server names that