plugin/secondary: parse catalog zones after transfer (#8209)

This commit is contained in:
houyuwushang
2026-07-05 08:06:05 +08:00
committed by GitHub
parent 9226f8a3aa
commit 97e3a71afb
10 changed files with 662 additions and 15 deletions

View File

@@ -24,6 +24,7 @@ type (
Next plugin.Handler
Zones
Xfer *transfer.Transfer
TransferInFunc
Fall fall.F
}
@@ -71,7 +72,9 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i
log.Infof("Notify from %s for %s: checking transfer", state.IP(), zone)
ok, err := z.shouldTransfer()
if ok {
z.TransferIn(f.Xfer)
if err := f.transferIn(z, f.Xfer); err != nil {
log.Warningf("Notify from %s for %s: transfer failed: %s", state.IP(), zone, err)
}
} else {
log.Infof("Notify from %s for %s: no SOA serial increase seen", state.IP(), zone)
}
@@ -131,6 +134,13 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i
// Name implements the Handler interface.
func (f File) Name() string { return "file" }
func (f File) transferIn(z *Zone, t *transfer.Transfer) error {
if f.TransferInFunc != nil {
return f.TransferInFunc(z, t)
}
return z.TransferIn(t)
}
type serialErr struct {
err string
zone string