Resolve PTR names over DNS-over-HTTPS and cache them for the record TTL (closes #238)
check / check (push) Failing after 8m42s

`internal/ptr` asks Google, Cloudflare, AdGuard and Quad9 in turn, 2 seconds in all per address. It keeps answers in memory and writes them through to `cache.db`, opened by the new `internal/cachedb`. A reserved address is not sent to the resolvers.

Judgement calls:
- Each resolver gets an equal share of the time left, so a hung resolver does not use up the 2 seconds.
- The negative TTL is the smaller of the SOA minimum and the SOA's own TTL (RFC 2308).
- Names that are not host names are dropped, as `net.Resolver.LookupAddr` does.

Model: opus-5-5
This commit is contained in:
sneak committed 2026-11-10 11:03:01 +00:00
1 parent 3204b7ee4b
commit e886ac64a8
18 files changed
+1725 -53

No files matched your search

+3 -1
View File
@@ -68,10 +68,12 @@ go.work
go.work.sum
# Local databases, temporary files and debug output. The daemon's
# database is db.sqlite, with its -wal and -shm files while it runs.
# databases are db.sqlite and cache.db, with their -wal and -shm files
# while it runs.
*.db
*.db-journal
*.db-wal
*.db-shm
*.sqlite
*.sqlite-wal
*.sqlite-shm