diff --git a/discover/discover.go b/discover/discover.go index 0b23cc31..70ec6893 100644 --- a/discover/discover.go +++ b/discover/discover.go @@ -172,16 +172,21 @@ func (d *Discoverer) sendLocalAnnouncements() { } func (d *Discoverer) sendExternalAnnouncements() { + // this should go in the Discoverer struct + errorRetryIntv := 60 * time.Second + remote, err := net.ResolveUDPAddr("udp", d.extServer) - if err != nil { - l.Warnf("Global discovery: %v; no external announcements", err) - return + for err != nil { + l.Warnf("Global discovery: %v; trying again in %v", err, errorRetryIntv) + time.Sleep(errorRetryIntv) + remote, err = net.ResolveUDPAddr("udp", d.extServer) } conn, err := net.ListenUDP("udp", nil) - if err != nil { - l.Warnf("Global discovery: %v; no external announcements", err) - return + for err != nil { + l.Warnf("Global discovery: %v; trying again in %v", err, errorRetryIntv) + time.Sleep(errorRetryIntv) + conn, err = net.ListenUDP("udp", nil) } var buf []byte @@ -202,7 +207,7 @@ func (d *Discoverer) sendExternalAnnouncements() { l.Debugf("discover: send announcement -> %v\n%s", remote, hex.Dump(buf)) } - _, err = conn.WriteTo(buf, remote) + _, err := conn.WriteTo(buf, remote) if err != nil { if debug { l.Debugln("discover: warning:", err) @@ -226,7 +231,7 @@ func (d *Discoverer) sendExternalAnnouncements() { if ok { time.Sleep(d.globalBcastIntv) } else { - time.Sleep(60 * time.Second) + time.Sleep(errorRetryIntv) } } }