AdguardTeam / AdguardTeam/dnsproxy
TTL=0 responses are cached and rewritten to cache_ttl_min
- 主要语言
- Go
- 星标
- 3.3k
- 派生
- 343
- PR 合并指标
- 30 天内没有已合并 PR
描述
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`.
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。