Skip to content

Commit

Permalink
don't block on DiscoverHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
whyrusleeping committed Sep 20, 2016
1 parent 4ae3510 commit b1273e9
Showing 1 changed file with 20 additions and 15 deletions.
35 changes: 20 additions & 15 deletions p2p/discovery/mdns.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,37 +109,42 @@ func (m *mdnsService) Close() error {
}

func (m *mdnsService) pollForEntries() {
entriesCh := make(chan *mdns.ServiceEntry, 16)
go func() {
for entry := range entriesCh {
m.handleEntry(entry)
}
}()

ticker := time.NewTicker(m.interval)
for range ticker.C {
entriesCh := make(chan *mdns.ServiceEntry, 16)
go func() {
for entry := range entriesCh {
m.handleEntry(entry)
}
}()

qp := mdns.QueryParam{}
qp.Domain = "local"
qp.Entries = entriesCh
qp.Service = ServiceTag
qp.Timeout = time.Second * 5

err := mdns.Query(&qp)
log.Debug("starting mdns query")
qp := &mdns.QueryParam{
Domain: "local",
Entries: entriesCh,
Service: ServiceTag,
Timeout: time.Second * 5,
}

err := mdns.Query(qp)
if err != nil {
log.Error("mdns lookup error: ", err)
}
close(entriesCh)
log.Debug("mdns query complete")
}
}

func (m *mdnsService) handleEntry(e *mdns.ServiceEntry) {
log.Debugf("Handling MDNS entry: %s:%d %s", e.AddrV4, e.Port, e.Info)
mpeer, err := peer.IDB58Decode(e.Info)
if err != nil {
log.Warning("Error parsing peer ID from mdns entry: ", err)
return
}

if mpeer == m.host.ID() {
log.Debug("got our own mdns entry, skipping")
return
}

Expand All @@ -159,7 +164,7 @@ func (m *mdnsService) handleEntry(e *mdns.ServiceEntry) {

m.lk.Lock()
for _, n := range m.notifees {
n.HandlePeerFound(pi)
go n.HandlePeerFound(pi)
}
m.lk.Unlock()
}
Expand Down

0 comments on commit b1273e9

Please sign in to comment.