Tags give the ability to mark specific points in history as being important
-
v0.2.4
protecteda413c1c2 · ·v0.2.4 Fix the split DNS cache poisoning that made *.ts.net (Tailscale) lookups flaky and slow. - Do not cache non-success / non-NXDOMAIN responses; transient SERVFAIL from MagicDNS no longer pins a stale NOERROR/empty answer for DefaultTTL=3600s. - Preserve stored Rcode on cache hits (stop calling dns.Msg.SetReply on the stored msg, which was unconditionally rewriting Rcode to Success). - Deep-copy the cached *dns.Msg so concurrent hits cannot mutate it via SetReply / MsgHdr.Id (was a -race finding under concurrent A/AAAA). - Honor SOA MINIMUM (RFC 2308) for negative-cache TTL with a 300s cap and 60s fallback when no SOA is provided; skip caching when TTL is 0. - Coalesce N concurrent identical misses into a single upstream call (single-flight via sync.Map of *flight{done,msg}); reduces hammering of MagicDNS on cold-cache bursts. - Reproduction tests in pkg/resolver/cache_test.go and pkg/split/cache_integration_test.go lock in the contract. - Remove redundant Go 1.22+ loopvar copies in pkg/record/source.go and pkg/server/server.go to unblock the lint stage that failed on v0.2.3. -
v0.2.3
protectedd3148b93 · ·v0.2.3 - parallel list loading Async list loading: DNS pipeline serves queries via upstream while local/allow/block lists download and parse on background goroutines; matchers atomically swap in once each list finishes loading. Observable via server.Server.ListsReady(). Bug fixes: - guard listsReady close with sync.Once - demote tolerated source-load failures from error to warn - avoid close-on-send race in dns.NewHandler
-
v0.2.1
protectedb7319a10 · ·v0.2.1 First releasable build of the OTEL/install/blocklists feature set. (v0.2.0 was tagged but its pipeline failed lint before release; this is the same feature set with the golangci-lint goimports local-prefix grouping and gosec uint64 clamp applied.) Highlights: - Full OpenTelemetry instrumentation (traces, metrics, logs) - New dns.otel.* config schema with VOID_DNS_OTEL_* env-var bindings - make install / uninstall / purge targets - postinstall pins /etc/resolv.conf at 127.0.0.1 and releases Tailscale accept-dns - Bundled curated remote blocklists - Bug fix: remote-source fetch errors no longer silently swallowed
-
v0.2.0
protected46355a27 · ·v0.2.0 Highlights: - Full OpenTelemetry instrumentation (traces, metrics, logs over OTLP/HTTP or gRPC) - Per-DNS-query root span + per-resolver-stage child spans + DNS metrics + slog->OTEL log bridge - New 'dns.otel.*' config schema with VOID_DNS_OTEL_* env-var bindings; disabled by default - make install / uninstall / purge targets that run the new postinstall.sh / preremove.sh - postinstall: snapshot resolv.conf, release Tailscale accept-dns, pin /etc/resolv.conf at 127.0.0.1 - Bundled curated remote blocklists (StevenBlack, Hagezi PRO/TIF/DoH, WindowsSpyBlocker) - Bug fix: remote-source fetch errors no longer silently swallowed; HTTP fetch bypasses /etc/resolv.conf via a dedicated dialer; cache writes are atomic