A WHOIS lookup now fails when the RIR query fails or the RIR's answer holds none of the WHOIS fields (as with RIPE's %ERROR:201: access denied). The fetcher backs off and leaves the AS's row untouched, so the AS stays stale and is retried, instead of storing it blank for 30 days and speeding up.
An AS IANA refers to no RIR (private-use, reserved, unallocated) gets ErrNoReferral; the fetcher stores it with no WHOIS data, so it waits until stale, counting neither a success nor a failure.
What the diff does not show:
The fields come from the RIR's answer alone; IANA's changed: line, which dates its block, used to win over the RIR's last-modified date.
The organisation-line RIR guess in parseIANAReferral went: only answers without a referral used it.
Tests reach fake servers through the client's new DialContext field, not a refer: to a local port, so the referral limit of #106 will not break them.
Disclosures:
The issue's tests say the interval stays "unchanged"; the backoff it asks for doubles it, and the tests check that.
Judgement call: an IANA answer with neither a referral nor an as-block: line is a failed lookup.
Judgement call: a no-referral AS counts as fresh in the WHOIS statistics; "not counting as fetched" read as not a fetcher success.
Not done: lookups queued by IP requests still run back to back, ignoring the backoff; the definition of done does not ask for it.
database.go and TODO.md are unchanged.
Model: opus-5-5
Closes https://git.eeqj.de/sneak/routewatch/issues/105.
A WHOIS lookup now fails when the RIR query fails or the RIR's answer holds none of the WHOIS fields (as with RIPE's `%ERROR:201: access denied`). The fetcher backs off and leaves the AS's row untouched, so the AS stays stale and is retried, instead of storing it blank for 30 days and speeding up.
An AS IANA refers to no RIR (private-use, reserved, unallocated) gets `ErrNoReferral`; the fetcher stores it with no WHOIS data, so it waits until stale, counting neither a success nor a failure.
What the diff does not show:
- The fields come from the RIR's answer alone; IANA's `changed:` line, which dates its block, used to win over the RIR's last-modified date.
- The organisation-line RIR guess in `parseIANAReferral` went: only answers without a referral used it.
- Tests reach fake servers through the client's new `DialContext` field, not a `refer:` to a local port, so the referral limit of https://git.eeqj.de/sneak/routewatch/issues/106 will not break them.
Disclosures:
- The issue's tests say the interval stays "unchanged"; the backoff it asks for doubles it, and the tests check that.
- Judgement call: an IANA answer with neither a referral nor an `as-block:` line is a failed lookup.
- Judgement call: a no-referral AS counts as fresh in the WHOIS statistics; "not counting as fetched" read as not a fetcher success.
- Not done: lookups queued by IP requests still run back to back, ignoring the backoff; the definition of done does not ask for it.
- `database.go` and `TODO.md` are unchanged.
Model: opus-5-5
A lookup whose RIR query failed, or whose RIR answer carried none of the
WHOIS fields (a refusal of service, for one), returned IANA's answer as
a success. The fetcher stored it as complete with blank fields, did not
look the AS up again for 30 days, and shortened its interval. Such a
lookup is now an error: the fetcher backs off and leaves the row as it
was. The fields are read from the RIR's answer alone. An AS IANA refers
to no RIR is stored with no WHOIS data, so it is not looked up again
until it is stale, counting as neither a success nor a failure. Tests
reach fake WHOIS servers through the client's DialContext.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #105.
A WHOIS lookup now fails when the RIR query fails or the RIR's answer holds none of the WHOIS fields (as with RIPE's
%ERROR:201: access denied). The fetcher backs off and leaves the AS's row untouched, so the AS stays stale and is retried, instead of storing it blank for 30 days and speeding up.An AS IANA refers to no RIR (private-use, reserved, unallocated) gets
ErrNoReferral; the fetcher stores it with no WHOIS data, so it waits until stale, counting neither a success nor a failure.What the diff does not show:
changed:line, which dates its block, used to win over the RIR's last-modified date.parseIANAReferralwent: only answers without a referral used it.DialContextfield, not arefer:to a local port, so the referral limit of #106 will not break them.Disclosures:
as-block:line is a failed lookup.database.goandTODO.mdare unchanged.Model: opus-5-5
Review passed.
Model: opus-5-5