Log DNS optimistic background refresh outcomes

This commit is contained in:
世界 2026-04-21 13:28:14 +08:00
parent b358fdd564
commit 6b51bd6778
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
2 changed files with 18 additions and 1 deletions

View file

@ -500,7 +500,7 @@ func (c *Client) backgroundRefreshDNS(transport adapter.DNSTransport, question d
response, err := c.exchangeToTransport(ctx, transport, message)
if err != nil {
if c.logger != nil {
c.logger.Debug("optimistic refresh failed for ", FqdnToDomain(question.Name), ": ", err)
c.logger.DebugContext(ctx, "optimistic refresh failed for ", FqdnToDomain(question.Name), ": ", err)
}
return
}
@ -512,6 +512,9 @@ func (c *Client) backgroundRefreshDNS(transport adapter.DNSTransport, question d
rejected = !responseChecker(response)
}
if rejected {
if c.logger != nil {
c.logger.DebugContext(ctx, "optimistic refresh rejected for ", FqdnToDomain(question.Name))
}
if c.rdrc != nil {
c.rdrc.SaveRDRCAsync(transport.Tag(), question.Name, question.Qtype, c.logger)
}
@ -522,6 +525,7 @@ func (c *Client) backgroundRefreshDNS(transport adapter.DNSTransport, question d
}
timeToLive := applyResponseOptions(question, response, options)
c.storeCache(transport, question, response, timeToLive)
logRefreshedResponse(c.logger, ctx, response, timeToLive)
}()
}

View file

@ -48,6 +48,19 @@ func logExchangedResponse(logger logger.ContextLogger, ctx context.Context, resp
}
}
func logRefreshedResponse(logger logger.ContextLogger, ctx context.Context, response *dns.Msg, ttl uint32) {
if logger == nil || len(response.Question) == 0 {
return
}
domain := FqdnToDomain(response.Question[0].Name)
logger.DebugContext(ctx, "refreshed ", domain, " ", dns.RcodeToString[response.Rcode], " ", ttl)
for _, recordList := range [][]dns.RR{response.Answer, response.Ns, response.Extra} {
for _, record := range recordList {
logger.InfoContext(ctx, "refreshed ", dns.Type(record.Header().Rrtype).String(), " ", FormatQuestion(record.String()))
}
}
}
func logRejectedResponse(logger logger.ContextLogger, ctx context.Context, response *dns.Msg) {
if logger == nil || len(response.Question) == 0 {
return