aboutsummaryrefslogtreecommitdiff
path: root/config.go
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-05-01 18:19:00 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-05-01 18:19:22 +0200
commit1b2d0d40f704813835bafebe095e7e31fbc00168 (patch)
treea9052426f13e1df0f7050a7eaaa5bd7532efefef /config.go
parent5ba1fb6132a16bc2ed2480c3e6ac5e3e85d95752 (diff)
Make AddServer require at least one media pool member
Diffstat (limited to 'config.go')
-rw-r--r--config.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/config.go b/config.go
index c119999..a286386 100644
--- a/config.go
+++ b/config.go
@@ -114,20 +114,32 @@ AppendLoop:
// AddServer dynamically configures a new Server at runtime.
// Servers added in this way are ephemeral and will be lost
// when the proxy shuts down.
-// For the media to work you have to specify an alternative
-// media source that is always available, even if the server
-// is offline.
+// The server must be part of a media pool with at least one
+// other member. At least one of the other members always
+// needs to be reachable.
func AddServer(s Server) bool {
configMu.Lock()
defer configMu.Unlock()
s.dynamic = true
+
for _, srv := range config.Servers {
if srv.Name == s.Name {
return false
}
}
+ var poolMembers bool
+ for _, srv := range config.Servers {
+ if srv.MediaPool == s.MediaPool {
+ poolMembers = true
+ }
+ }
+
+ if !poolMembers {
+ return false
+ }
+
config.Servers = append(config.Servers, s)
return true
}