dns.go 539 B

12345678910111213141516171819202122232425262728293031
  1. package dht
  2. import (
  3. "sync"
  4. "time"
  5. "github.com/rs/dnscache"
  6. )
  7. var (
  8. // A cache to prevent wasteful/excessive use of DNS when trying to bootstrap.
  9. dnsResolver *dnscache.Resolver
  10. dnsResolverInit sync.Once
  11. )
  12. func dnsResolverRefresher() {
  13. ticker := time.NewTicker(5 * time.Minute)
  14. defer ticker.Stop()
  15. for {
  16. <-ticker.C
  17. dnsResolver.Refresh(false)
  18. }
  19. }
  20. // https://github.com/anacrolix/dht/issues/43
  21. func initDnsResolver() {
  22. dnsResolverInit.Do(func() {
  23. dnsResolver = &dnscache.Resolver{}
  24. go dnsResolverRefresher()
  25. })
  26. }