Configured targets take priority over discovery

If a target address is configured for a universe, use it directly
instead of looking for discovered nodes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Ian Gulliver
2025-12-24 13:01:22 -08:00
parent 5019f7c060
commit 42b1e63ebc

19
main.go
View File

@@ -257,9 +257,15 @@ func (a *App) sendOutputs(outputs []remap.Output) {
} }
default: // ArtNet default: // ArtNet
nodes := a.discovery.GetNodesForUniverse(out.Universe) // Configured target takes priority over discovery
if target, ok := a.targets[out.Universe]; ok {
if len(nodes) > 0 { if a.debug {
log.Printf("[->artnet] dst=%s universe=%s", target.IP, out.Universe)
}
if err := a.artSender.SendDMX(target, out.Universe, out.Data[:]); err != nil {
log.Printf("[->artnet] error: dst=%s err=%v", target.IP, err)
}
} else if nodes := a.discovery.GetNodesForUniverse(out.Universe); len(nodes) > 0 {
for _, node := range nodes { for _, node := range nodes {
addr := &net.UDPAddr{ addr := &net.UDPAddr{
IP: node.IP, IP: node.IP,
@@ -272,13 +278,6 @@ func (a *App) sendOutputs(outputs []remap.Output) {
log.Printf("[->artnet] error: dst=%s err=%v", node.IP, err) log.Printf("[->artnet] error: dst=%s err=%v", node.IP, err)
} }
} }
} else if target, ok := a.targets[out.Universe]; ok {
if a.debug {
log.Printf("[->artnet] dst=%s universe=%s", target.IP, out.Universe)
}
if err := a.artSender.SendDMX(target, out.Universe, out.Data[:]); err != nil {
log.Printf("[->artnet] error: dst=%s err=%v", target.IP, err)
}
} else if len(a.broadcasts) > 0 { } else if len(a.broadcasts) > 0 {
for _, bcast := range a.broadcasts { for _, bcast := range a.broadcasts {
if a.debug { if a.debug {