func addresses(conf *dns.ClientConfig, c *dns.Client, name string) []string { m4 := new(dns.Msg) m4.SetQuestion(dns.Fqdn(os.Args[1]), dns.TypeA) m6 := new(dns.Msg) m6.SetQuestion(dns.Fqdn(os.Args[1]), dns.TypeAAAA) addr := make(chan []string) defer close(addr) c.Do(m4, conf.Servers[0]+":"+conf.Port, addr, qhandler) c.Do(m6, conf.Servers[0]+":"+conf.Port, addr, qhandler) var ips []string i := 2 // two outstanding queries forever: for { select { case ip := <-addr: ips = append(ips, ip...) i-- if i == 0 { break forever } } } return ips }