AdguardTeam / AdguardTeam/dnsproxy

TTL=0 responses are cached and rewritten to cache_ttl_min

Đang mở
#490 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Go
Star
3.3k
Fork
343
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

According to RFC 1035, resource records with TTL=0 must not be cached. They may only be used for the current transaction.

However, in my setup AdGuard Home appears to cache upstream responses with TTL=0 and then rewrites the returned TTL to `cache_ttl_min`. This seems incorrect for two reasons:

1. TTL=0 responses should not be cached.
2. Rewriting TTL=0 to `cache_ttl_min` changes the caching semantics defined by RFC 1035.

Expected behavior:

- A response with TTL=0 should not be inserted into cache.
- `cache_ttl_min` should not be applied to TTL=0 responses, unless this behavior is explicitly documented as an intentional standards deviation.

Actual behavior:

- Repeated queries appear to be served from cache.
- The returned TTL is rewritten to the configured `cache_ttl_min` instead of remaining non-cacheable.

Notes:

- RFC 1035 says TTL=0 records "should not be cached".
- Current dnsproxy cache logic also appears to treat computed TTL=0 as non-cacheable. https://github.com/AdguardTeam/dnsproxy/blob/88e87e0705da4d3617524c3da3180b125e003265/proxy/cache.go#L406
- If this behavior is intentional, the documentation for `cache_ttl_min` should explicitly mention that TTL=0 is overridden and cached despite RFC semantics.

Reproduction:

1. Configure an upstream that returns TTL=0 for a test record.
2. Set `cache_ttl_min` to a positive value.
3. Query the same record multiple times through AdGuard Home.
4. Observe whether the second and later responses are served from cache and have TTL rewritten to `cache_ttl_min`.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.