mirror of
https://github.com/isc-projects/bind9.git
synced 2026-03-27 04:43:08 -04:00
When something goes wrong while recursing for an answer to a query, query_gotanswer() sets a flag (qctx->want_stale) in the query context. query_done() is subsequently called and it can either set up a stale response lookup (if serve-stale is enabled) or conclude that a SERVFAIL response should be sent. This may cause confusion when looking at query error logs since the QUERY_ERROR() line responsible for setting the response's RCODE to SERVFAIL is not in a catch-all branch of a switch statement inside query_gotanswer() (like it is for authoritative responses) but rather in a code branch which appears to have something to do with serve-stale, even when the latter is not enabled. Extract the part of query_done() responsible for checking serve-stale configuration and optionally setting up a stale response lookup into a separate function, query_usestale(), shifting the responsibility for setting the response's RCODE to SERVFAIL to the same QUERY_ERROR() line in query_gotanswer() which is evaluated for authoritative responses. |
||
|---|---|---|
| .. | ||
| bind9 | ||
| dns | ||
| irs | ||
| isc | ||
| isccc | ||
| isccfg | ||
| ns | ||
| samples | ||
| win32/bindevt | ||
| .gitignore | ||
| Atffile | ||
| Kyuafile | ||
| Makefile.in | ||