watcher: a hostname whose zone's nameservers all stop answering gets NS Failure (closes #284)
check / check (push) Waiting to run
check / check (push) Waiting to run
When none of the nameservers of a hostname's zone answered, the walk to them failed and the check was only logged. The walk now returns a NoAnswerError naming the nameservers of the zone it reached through a referral when none of them answers. When those are the nameservers the previous check saved for the name, each is saved as failed with the reason, so it gets an NS Failure and later an NS Recovery. A domain with no delegation of its own, whose NS lookup is that same walk, gets the same. A walk that fails before that zone, as when the host loses its network, is still only logged. Model: opus-5-5
This commit is contained in:
@@ -2,6 +2,23 @@ package resolver
|
||||
|
||||
import "errors"
|
||||
|
||||
// NoAnswerError is returned when the walk to a name's nameservers
|
||||
// reached a zone through a referral and none of that zone's
|
||||
// nameservers, Nameservers as the referral names them, answered. Err
|
||||
// says why they did not.
|
||||
type NoAnswerError struct {
|
||||
Nameservers []string
|
||||
Err error
|
||||
}
|
||||
|
||||
func (e *NoAnswerError) Error() string {
|
||||
return e.Err.Error()
|
||||
}
|
||||
|
||||
func (e *NoAnswerError) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
|
||||
// Sentinel errors returned by the resolver.
|
||||
var (
|
||||
// ErrNoNameservers is returned when no authoritative NS
|
||||
|
||||
Reference in New Issue
Block a user