From 7c7bd31d3e76134d8fdfe293a6c90e1a52c3f47f Mon Sep 17 00:00:00 2001 From: Alexey Kholupko Date: Sat, 27 Jan 2018 15:37:15 +0700 Subject: [PATCH] mDNS discovery starts announcing right away: does not wait for first interval to elapse. Closes #256 --- p2p/discovery/mdns.go | 45 +++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/p2p/discovery/mdns.go b/p2p/discovery/mdns.go index 43c1bed..a7ec72a 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 -- GitLab