diff --git a/discovery/registry.go b/discovery/registry.go index dbb9ff6..a242677 100644 --- a/discovery/registry.go +++ b/discovery/registry.go @@ -107,10 +107,13 @@ func (reg *Registry) Observe(dh *protocol.DiscoveryHeaders) (d device.D, isNew b } // Observe the entry and update its timeout and headers. - e.updateState(now, &discoveredDeviceState{ - dh: dh, - expires: now.Add(reg.Expiration), - }) + st := discoveredDeviceState{ + dh: dh, + } + if reg.Expiration > 0 { + st.expires = now.Add(reg.Expiration) + } + e.updateState(now, &st) d = e.device return @@ -179,7 +182,9 @@ type registryEntry struct { func (e *registryEntry) updateState(now time.Time, st *discoveredDeviceState) { e.device.UpdateHeaders(now, st.dh) - e.updateExpirationC <- st.expires + if !st.expires.IsZero() { + e.updateExpirationC <- st.expires + } } func (e *registryEntry) manageEntryLifecycle() {