func handleXfrOut(d *dns.Conn, i *dns.Msg) os.Error { if i.IsAxfr() { fmt.Printf("Incoming Axfr request seen\n") if i.Question[0].Name == Zone.name { fmt.Printf("Matches current zone\n") if !Zone.correct { fmt.Printf("Zone was not deemed correct\n") if err := d.WriteMsg(i); err != nil { return err } return nil } else { fmt.Printf("Zone was correct\n") } m := make(chan *dns.Xfr) e := make(chan os.Error) go d.XfrWrite(i, m, e) for j := 0; j < Zone.size; j++ { select { case m <- &dns.Xfr{Add: true, RR: Zone.rrs[j]}: // case err := <-e: return err } } close(m) } else { fmt.Printf("No matching zone found\n") if err := d.WriteMsg(i); err != nil { return err } } } return nil }