'name' : 'max_qperq',
'section' : 'outgoing',
'type' : LType.Uint64,
- 'default' : '60',
+ 'default' : '50',
'help' : 'Maximum outgoing queries per query',
'doc' : '''
The maximum number of outgoing queries that will be sent out during the resolution of a single client query.
-This is used to limit endlessly chasing CNAME redirections.
-If qname-minimization is enabled, the number will be forced to be 100
-at a minimum to allow for the extra queries qname-minimization generates when the cache is empty.
+This is used to avoid cycles resolving names.
''',
+ 'versionchanged': ('5.0.0', 'The default used to be 60, with an extra allowance if qname minimization was enabled. Having better algorithms allows for a lower default limit.'),
},
{
'name' : 'max_ns_address_qperq',
void SyncRes::checkMaxQperQ(const DNSName& qname) const
{
- auto bound = s_maxqperq;
- if (d_qNameMinimization) {
- // With an empty cache, a rev ipv6 query with dnssec enabled takes
- // almost 100 queries. Default maxqperq is 60
- // Note: This no longer seems to be true. The examples taken from #8646 take now way less
- // queries. The main reason seems to be a much better zone cut determination.
- bound = std::max(100U, bound);
- }
-
- if (d_outqueries + d_throttledqueries > bound) {
- throw ImmediateServFailException("more than " + std::to_string(bound) + " (adjusted max-qperq) queries sent or throttled while resolving " + qname.toLogString());
+ if (d_outqueries + d_throttledqueries > s_maxqperq) {
+ throw ImmediateServFailException("more than " + std::to_string(s_maxqperq) + " (max-qperq) queries sent or throttled while resolving " + qname.toLogString());
}
}