]> granicus.if.org Git - pdns/commit
Fix the forward zones in the recursor
authorPieter Lexis <pieter.lexis@powerdns.com>
Fri, 15 Jan 2016 17:00:26 +0000 (18:00 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 18 Jan 2016 15:29:28 +0000 (16:29 +0100)
commit88490c0365375978afea38bf352079b4fef28e17
treeac55260bfc2202d433f6b37b208df0ab2f8350fa
parent2c4aedaba8102d63f0ccaf4bd00c6fee39fca184
Fix the forward zones in the recursor

In the pre-DNSName era, when dns-native names were passed as strings, we
overloaded the NS-name for a forward or auth zone. e.g. an empty string
meant 'this is an auth zone' and '+203.0.113.1' meant 'forward to 203.0.113.1
with the RD bit set'. With DNSNames, this is impossible (yay!).

In this commit, the set of strings (and later DNSNames), is replaced by
a map where a DNSName is the key and the value is a pair of a
ComboAddress and a boolean.

A non-empty DNSName: This is a normal NS, recurse as usual (the pair is
ignored).

An empty DNSName and empty ComboAddress: We are auth for this zone,
check the auth store for an answer.

An empty DNSName and non-empty ComboAddress: The query must be forwarded
to the ComboAddress specified and the boolean in the pair tells us the
value of the RD bit in the query we need to send.
pdns/syncres.cc
pdns/syncres.hh