| author | Alberto Bertogli
<albertito@blitiri.com.ar> 2026-10-23 19:48:46 UTC |
| committer | Alberto Bertogli
<albertito@blitiri.com.ar> 2026-10-23 19:48:46 UTC |
| parent | 90bda13c0d39a7b38e72a89e943fb956f29e191e |
| dnss.go | +4 | -8 |
| internal/dnsserver/caching_test.go | +6 | -6 |
| internal/dnsserver/domainmap.go | +1 | -1 |
| internal/dnsserver/server.go | +4 | -8 |
| internal/httpresolver/resolver_test.go | +1 | -1 |
| internal/nettrace/bench_test.go | +2 | -2 |
| internal/nettrace/histogram.go | +1 | -1 |
| internal/nettrace/http_test.go | +1 | -1 |
| internal/nettrace/trace.go | +8 | -9 |
| internal/nettrace/trace_test.go | +3 | -3 |
| internal/testutil/testutil.go | +1 | -1 |
| internal/trace/trace.go | +3 | -3 |
diff --git a/dnss.go b/dnss.go index 44152f8..f0298da 100644 --- a/dnss.go +++ b/dnss.go @@ -123,11 +123,9 @@ func main() { dth := dnsserver.New(*dnsListenAddr, resolver, *dnsUnqualifiedUpstream, overrides) - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { dth.ListenAndServe() - }() + }) } // HTTPS to DNS. @@ -140,11 +138,9 @@ func main() { Insecure: *insecureHTTPServer, } - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { s.ListenAndServe() - }() + }) } wg.Wait() diff --git a/internal/dnsserver/caching_test.go b/internal/dnsserver/caching_test.go index 168163a..02d814d 100644 --- a/internal/dnsserver/caching_test.go +++ b/internal/dnsserver/caching_test.go @@ -239,7 +239,7 @@ func TestMinTTL(t *testing.T) { r.Response.Answer = append(r.Response.Answer, mustNewRR(t, "cdn.test. 30 A 1.2.3.4")) req := newQuery("test.", dns.TypeA) - for i := 0; i < 2; i++ { + for range 2 { if _, err := c.Query(req, tr); err != nil { t.Fatalf("query failed: %v", err) } @@ -254,7 +254,7 @@ func TestMinTTL(t *testing.T) { r.Response.Answer = append(r.Response.Answer, mustNewRR(t, "cdn.test. 600 A 1.2.3.4")) req = newQuery("test2.", dns.TypeA) - for i := 0; i < 2; i++ { + for range 2 { resp, err := c.Query(req, tr) if err != nil { t.Fatalf("query failed: %v", err) @@ -274,7 +274,7 @@ func TestMinTTL(t *testing.T) { resetStats() r.Response = newReply(mustNewRR(t, "test3. 2147483648 A 1.2.3.4")) req = newQuery("test3.", dns.TypeA) - for i := 0; i < 2; i++ { + for range 2 { if _, err := c.Query(req, tr); err != nil { t.Fatalf("query failed: %v", err) } @@ -390,7 +390,7 @@ func TestWantToCache(t *testing.T) { r = reply.Copy() r.Answer = nil - for i := 0; i < 300; i++ { + for range 300 { r.Answer = append(r.Answer, mustNewRR(t, "test. A 1.2.3.4")) } checkWantToCache(t, q, r, "answer too large") @@ -447,7 +447,7 @@ func TestZeroSize(t *testing.T) { r.Response = newReply(mustNewRR(t, "test. A 1.2.3.4")) // Do 5 different requests. - for i := 0; i < 5; i++ { + for i := range 5 { queryA(t, c, "", fmt.Sprintf("test%d.", i), "1.2.3.4") if !statsEquals(i+1, 0, i+1) { t.Errorf("bad stats: %v", dumpStats()) @@ -456,7 +456,7 @@ func TestZeroSize(t *testing.T) { // Query them back, they should all be misses. resetStats() - for i := 0; i < 5; i++ { + for i := range 5 { queryA(t, c, "", fmt.Sprintf("test%d.", i), "1.2.3.4") if !statsEquals(i+1, 0, i+1) { t.Errorf("bad stats: %v", dumpStats()) diff --git a/internal/dnsserver/domainmap.go b/internal/dnsserver/domainmap.go index b4212d3..ddca8ce 100644 --- a/internal/dnsserver/domainmap.go +++ b/internal/dnsserver/domainmap.go @@ -51,7 +51,7 @@ func (m DomainMap) GetMostSpecific(domain string) (string, bool) { // {"domain1": "addr1", "domain2": "addr2", ...}. func DomainMapFromString(s string) (DomainMap, error) { m := DomainMap{} - for _, pair := range strings.Split(s, ",") { + for pair := range strings.SplitSeq(s, ",") { pair = strings.TrimSpace(pair) if pair == "" { continue diff --git a/internal/dnsserver/server.go b/internal/dnsserver/server.go index bda16b9..2f26de2 100644 --- a/internal/dnsserver/server.go +++ b/internal/dnsserver/server.go @@ -181,19 +181,15 @@ func (s *Server) classicServe() { log.Infof("DNS listening on %s", s.Addr) var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { err := dns.ListenAndServe(s.Addr, "udp", dns.HandlerFunc(s.Handler)) log.Fatalf("Exiting UDP: %v", err) - }() + }) - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { err := dns.ListenAndServe(s.Addr, "tcp", dns.HandlerFunc(s.Handler)) log.Fatalf("Exiting TCP: %v", err) - }() + }) wg.Wait() } diff --git a/internal/httpresolver/resolver_test.go b/internal/httpresolver/resolver_test.go index 276fa61..410250b 100644 --- a/internal/httpresolver/resolver_test.go +++ b/internal/httpresolver/resolver_test.go @@ -135,7 +135,7 @@ func TestNoBody(t *testing.T) { w.Header().Set("Content-Type", "application/dns-message") // Write some data so it gets flushed to the client before // abruptly closing the connection. - for i := 0; i < 2000; i++ { + for range 2000 { fmt.Fprintf(w, "some response\n") } defer ts.CloseClientConnections() diff --git a/internal/nettrace/bench_test.go b/internal/nettrace/bench_test.go index a58fdbb..9fd1f81 100644 --- a/internal/nettrace/bench_test.go +++ b/internal/nettrace/bench_test.go @@ -9,9 +9,9 @@ import ( func runBench(b *testing.B, events int) { nTraces := (b.N + events + 1) / events - for i := 0; i < nTraces; i++ { + for range nTraces { tr := New("bench", "test") - for j := 0; j < events; j++ { + for j := range events { tr.Printf("%d", j) } tr.Finish() diff --git a/internal/nettrace/histogram.go b/internal/nettrace/histogram.go index 662a887..8d78958 100644 --- a/internal/nettrace/histogram.go +++ b/internal/nettrace/histogram.go @@ -53,7 +53,7 @@ func (h *histogram) Snapshot() *histSnapshot { } var cumCount uint64 - for i := 0; i < nBuckets; i++ { + for i := range nBuckets { cumCount += h.count[i] l := line{ Start: buckets[i], diff --git a/internal/nettrace/http_test.go b/internal/nettrace/http_test.go index 24c82f6..4664179 100644 --- a/internal/nettrace/http_test.go +++ b/internal/nettrace/http_test.go @@ -141,7 +141,7 @@ func TestHTTP(t *testing.T) { func TestHTTPLong(t *testing.T) { // Test a long trace. tr := New("TestHTTPLong", "verbose") - for i := 0; i < 1000; i++ { + for i := range 1000 { tr.Printf("entry #%d", i) } tr.Finish() diff --git a/internal/nettrace/trace.go b/internal/nettrace/trace.go index 1c4f739..e9963ff 100644 --- a/internal/nettrace/trace.go +++ b/internal/nettrace/trace.go @@ -5,6 +5,7 @@ package nettrace import ( "container/ring" "fmt" + "maps" "math/rand" "sort" "strconv" @@ -51,11 +52,11 @@ type Trace interface { SetError() // Printf adds a message to the trace. - Printf(format string, a ...interface{}) + Printf(format string, a ...any) // Errorf adds a message to the trace, marks it as an error, and returns // an error for it. - Errorf(format string, a ...interface{}) error + Errorf(format string, a ...any) error // Finish marks the trace as complete. // The trace should not be used after calling this method. @@ -220,7 +221,7 @@ func (tr *trace) SetError() { tr.mu.Unlock() } -func (tr *trace) Printf(format string, a ...interface{}) { +func (tr *trace) Printf(format string, a ...any) { evt := &event{ When: time.Now(), Type: evtLOG, @@ -230,7 +231,7 @@ func (tr *trace) Printf(format string, a ...interface{}) { tr.append(evt) } -func (tr *trace) Errorf(format string, a ...interface{}) error { +func (tr *trace) Errorf(format string, a ...any) error { tr.SetError() err := fmt.Errorf(format, a...) tr.Printf("%s", err.Error()) @@ -354,7 +355,7 @@ func (r *traceRing) Len() int { } func (r *traceRing) Do(f func(tr *trace)) { - r.ring.Do(func(x interface{}) { + r.ring.Do(func(x any) { if x == nil { return } @@ -382,7 +383,7 @@ type familyTraces struct { func newFamilyTraces() *familyTraces { ft := &familyTraces{} ft.active = map[id]*trace{} - for i := 0; i < nBuckets; i++ { + for i := range nBuckets { ft.finished[i] = newTraceRing(tracesInBucket) } ft.errors = newTraceRing(tracesInBucket) @@ -512,9 +513,7 @@ func copyFamilies() map[string]*familyTraces { n := map[string]*familyTraces{} familiesMu.Lock() - for f, trs := range families { - n[f] = trs - } + maps.Copy(n, families) familiesMu.Unlock() return n diff --git a/internal/nettrace/trace_test.go b/internal/nettrace/trace_test.go index ebdb5c5..34d0d85 100644 --- a/internal/nettrace/trace_test.go +++ b/internal/nettrace/trace_test.go @@ -37,13 +37,13 @@ func TestLong(t *testing.T) { tr.SetMaxEvents(100) // First 90 events, no drop. - for i := 0; i < 90; i++ { + for i := range 90 { tr.Printf("evt %d", i) } expectEvents(t, tr, 90) // Up to 99, still no drop. - for i := 0; i < 9; i++ { + for i := range 9 { tr.Printf("evt %d", i) } expectEvents(t, tr, 99) @@ -57,7 +57,7 @@ func TestLong(t *testing.T) { expectEvents(t, tr, 101) // Add more events, expect none of them to exceed 101. - for i := 0; i < 9; i++ { + for i := range 9 { tr.Printf("evt %d", i) expectEvents(t, tr, 101) } diff --git a/internal/testutil/testutil.go b/internal/testutil/testutil.go index 11c2ca6..1cbde18 100644 --- a/internal/testutil/testutil.go +++ b/internal/testutil/testutil.go @@ -175,7 +175,7 @@ var LargeAnswerName = strings.Repeat(strings.Repeat("x", 62)+".", 4) // the 64 KiB DNS limit), but only ~5 KiB compressed. func NewLargeAnswer(n int) []dns.RR { rrs := []dns.RR{} - for i := 0; i < n; i++ { + for i := range n { rrs = append(rrs, &dns.A{ Hdr: dns.RR_Header{ Name: LargeAnswerName, diff --git a/internal/trace/trace.go b/internal/trace/trace.go index 5186894..2eb3ef4 100644 --- a/internal/trace/trace.go +++ b/internal/trace/trace.go @@ -31,11 +31,11 @@ func New(family, title string) *Trace { } // Printf adds this message to the trace's log. -func (t *Trace) Printf(format string, a ...interface{}) { +func (t *Trace) Printf(format string, a ...any) { t.t.Printf(format, a...) } -func (t *Trace) lprintf(n int, format string, a ...interface{}) { +func (t *Trace) lprintf(n int, format string, a ...any) { t.t.Printf(format, a...) // If -v=3, also log to the main log. @@ -46,7 +46,7 @@ func (t *Trace) lprintf(n int, format string, a ...interface{}) { } // Errorf adds this message to the trace's log, with an error level. -func (t *Trace) Errorf(format string, a ...interface{}) error { +func (t *Trace) Errorf(format string, a ...any) error { // Note we can't just call t.Error here, as it breaks caller logging. err := fmt.Errorf(format, a...) t.t.SetError()