diff --git a/client.go b/client.go index 1aaea3b0..9e4d9631 100644 --- a/client.go +++ b/client.go @@ -537,11 +537,16 @@ func (w *reply) writeClient(p []byte) (n int, err error) { i += j } n = i + // TODO(mg): is the loop correct? } case "", "udp", "udp4", "udp6": for a := 0; a < attempts; a++ { + println("DOING", a) setTimeouts(w) n, err = w.conn.(*net.UDPConn).Write(p) + if err == nil { + return + } if err != nil { if e, ok := err.(net.Error); ok && e.Timeout() { continue diff --git a/ex/fks-shield/shield.go b/ex/fks-shield/shield.go index 4d95eb34..aa88d126 100644 --- a/ex/fks-shield/shield.go +++ b/ex/fks-shield/shield.go @@ -31,6 +31,7 @@ func serve(w dns.ResponseWriter, r *dns.Msg, c *Cache) { c.Insert(p) return } else { + log.Printf("fks-shield: failed to get answer " + e.Error()) // w.Write(SERFVAIL) } } diff --git a/ex/q/q.go b/ex/q/q.go index 674adc18..b079506d 100644 --- a/ex/q/q.go +++ b/ex/q/q.go @@ -157,6 +157,7 @@ Flags: c.Net = "udp6" } } + c.Attempts = 6 m := new(dns.Msg) m.MsgHdr.Authoritative = *aa