diff --git a/p2p/discovery/mdns.go b/p2p/discovery/mdns.go index 43c1bedb33f07a9da9191474ff7401e11a63dbbc..a7ec72ab12ea1d42158d070b15c0b5f2ede96656 100644 --- a/p2p/discovery/mdns.go +++ b/p2p/discovery/mdns.go @@ -118,29 +118,32 @@ func (m *mdnsService) pollForEntries(ctx context.Context) { ticker := time.NewTicker(m.interval) for { - select { - case <-ticker.C: - entriesCh := make(chan *mdns.ServiceEntry, 16) - go func() { - for entry := range entriesCh { - m.handleEntry(entry) - } - }() - - log.Debug("starting mdns query") - qp := &mdns.QueryParam{ - Domain: "local", - Entries: entriesCh, - Service: m.tag, - Timeout: time.Second * 5, + //execute mdns query right away at method call and then with every tick + entriesCh := make(chan *mdns.ServiceEntry, 16) + go func() { + for entry := range entriesCh { + m.handleEntry(entry) } + }() + + log.Debug("starting mdns query") + qp := &mdns.QueryParam{ + Domain: "local", + Entries: entriesCh, + Service: m.tag, + Timeout: time.Second * 5, + } - err := mdns.Query(qp) - if err != nil { - log.Error("mdns lookup error: ", err) - } - close(entriesCh) - log.Debug("mdns query complete") + err := mdns.Query(qp) + if err != nil { + log.Error("mdns lookup error: ", err) + } + close(entriesCh) + log.Debug("mdns query complete") + + select { + case <-ticker.C: + continue case <-ctx.Done(): log.Debug("mdns service halting") return