aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-12-06 17:42:07 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-12-06 17:42:07 +0100
commit392e0387da8ad9f6b4ded69082de2c9deaffb13e (patch)
treedcc2576fef1a4452cff4504c6a8b705f5b91adee
parente0f7ade1b71322b038b735d12144a09c260053a4 (diff)
fix simple infinite fallback loops
A server can no longer fall back to itself. It is still possible to create loops with more than one server.
-rw-r--r--config.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/config.go b/config.go
index 3fd3efe..cf3c229 100644
--- a/config.go
+++ b/config.go
@@ -247,7 +247,16 @@ func FallbackServers(server string) []string {
}
fallbacks := srv.Fallbacks
- return append(fallbacks, conf.FallbackServers...)
+ fallbacks = append(fallbacks, conf.FallbackServers...)
+
+ final := make([]string, 0, len(fallbacks))
+ for _, srvName := range fallbacks {
+ if srvName != server {
+ final = append(final, srvName)
+ }
+ }
+
+ return final
}
// LoadConfig attempts to parse the configuration file.