No description
  • Go 84.8%
  • Scala 10.4%
  • Nix 4.5%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Børge Lundsaunet 016b6b11cd portal: make the Knot secondary actually refresh
The public secondary never caught up with the portal's zone. Two
independent breaks, both found against Knot 3.5.10's source:

1. The NOTIFY was not a NOTIFY. It went out with the query opcode
   and qtype NOTIFY (31), so Knot routed it as an ordinary query
   and answered NODATA — the notify path was never reached. It is
   now sent the RFC 1996 way: opcode NOTIFY, a single SOA question
   named after the zone.

2. The TCP server handled one query per connection, but Knot runs
   a whole refresh on one connection: the SOA check first, then the
   zone transfer behind it. The portal closed the socket after the
   SOA answer, so every transfer died with "connection reset" and
   only the 300 s poll backstop remained — which hit the same wall.
   Connections now serve queries until the client closes them.

(The secondary also needed automatic-acl in its knot.conf to admit
the notify at all; that is a fleet change, landing separately.)

Proven against a real knotd: with the fixes, an admin-triggered
zone change lands in the secondary's zone file within the same
second — notify accepted, refresh, zone file updated.

🤖 Generated with [ECA](https://eca.dev) (jokull/rotom)

Co-Authored-By: eca-agent <git@eca.dev>
2026-11-06 23:03:57 +01:00
.forgejo/workflows ci: hint at the tag input when a run is a no-op 2026-11-04 23:13:52 +01:00
agent agent: don't deadlock the status when a log line lands inside an update 2026-11-06 01:26:29 +01:00
android agent: take the network's addresses from the app where netlink is gated 2026-11-06 00:39:39 +01:00
channel channel: a file artifact, so the app's update needs no rootfs 2026-11-03 21:56:23 +01:00
cmd portal: serve its zone as a hidden DNS primary 2026-11-06 21:55:54 +01:00
docs portal: serve its zone as a hidden DNS primary 2026-11-06 21:55:54 +01:00
front/core portal: accept the phone's direct claim over the link 2026-11-05 23:18:45 +01:00
nix portal: bump vendorHash for the miekg/dns test dep 2026-11-06 22:16:45 +01:00
portal portal: make the Knot secondary actually refresh 2026-11-06 23:03:57 +01:00
proto portal: accept the phone's direct claim over the link 2026-11-05 23:18:45 +01:00
sniff go: portal and agent per ARCHITECTURE.md 2026-10-31 14:08:39 +01:00
splice go: portal and agent per ARCHITECTURE.md 2026-10-31 14:08:39 +01:00
.envrc add server names to the portal 2026-10-30 19:55:21 +01:00
.gitignore android: build the APK with Nix, not Mill 2026-11-03 21:38:22 +01:00
flake.lock starter: chambers from its stable channel 2026-11-02 21:26:23 +01:00
flake.nix nix: default-apps is phoneserver-base 2026-11-04 19:37:25 +01:00
go.mod portal: serve its zone as a hidden DNS primary 2026-11-06 21:55:54 +01:00
go.sum portal: serve its zone as a hidden DNS primary 2026-11-06 21:55:54 +01:00
purity_test.go front: phoneserver-web, and default-apps as the front and tools 2026-11-04 10:02:55 +01:00
SKILLS.md agent: take the network's addresses from the app where netlink is gated 2026-11-06 00:39:39 +01:00