5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-12-23 15:45:40 +00:00

Clean up old listeners first

This commit is contained in:
Neil Alexander 2019-03-06 12:09:57 +00:00
parent f4e17b9a9f
commit c0d5a8c0bd
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -115,6 +115,15 @@ func (m *multicast) announce() {
} }
for { for {
interfaces := m.interfaces() interfaces := m.interfaces()
// There might be interfaces that we configured listeners for but are no
// longer up - if that's the case then we should stop the listeners
for name, listener := range m.listeners {
if _, ok := interfaces[name]; !ok {
listener.stop <- true
delete(m.listeners, name)
m.core.log.Debugln("No longer multicasting on", name)
}
}
// Now that we have a list of valid interfaces from the operating system, // Now that we have a list of valid interfaces from the operating system,
// we can start checking if we can send multicasts on them // we can start checking if we can send multicasts on them
for _, iface := range interfaces { for _, iface := range interfaces {
@ -164,15 +173,6 @@ func (m *multicast) announce() {
} }
time.Sleep(time.Second) time.Sleep(time.Second)
} }
// There might be interfaces that we configured listeners for but are no
// longer up - if that's the case then we should stop the listeners
for name, listener := range m.listeners {
if _, ok := interfaces[name]; !ok {
listener.stop <- true
delete(m.listeners, name)
m.core.log.Debugln("No longer multicasting on", name)
}
}
time.Sleep(time.Second * 5) time.Sleep(time.Second * 5)
} }
} }