AdguardTeam / AdguardTeam/dnsproxy

TTL=0 responses are cached and rewritten to cache_ttl_min

Abierto
#490 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Go
Estrellas
3.3k
Forks
343
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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`.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.