BIND 10 #491: Connect DNS cache

BIND 10 Development do-not-reply at isc.org
Mon Feb 21 12:50:21 UTC 2011


#491: Connect DNS cache
-------------------------------------+-------------------------------------
                 Reporter:  shane    |                Owner:  jelte
                     Type:           |               Status:  reviewing
  enhancement                        |            Milestone:  R-Team-
                 Priority:  major    |  Sprint-20110222
                Component:           |           Resolution:
  resolver                           |            Sensitive:  0
                 Keywords:           |  Add Hours to Ticket:  0
Estimated Number of Hours:  4.0      |          Total Hours:  0
                Billable?:  1        |
                Internal?:  0        |
-------------------------------------+-------------------------------------
Changes (by stephen):

 * owner:  stephen => jelte


Comment:

 Reviewed commit c9a06623e3e6041342046d52f502ce5e478ef29c

 '''src/bin/resolver/resolver.cc'''[[BR]]
 MessageAnswer::operator(): when constructing the answer, can we assume
 that the passed-in answer_message has the RD and CD bits clear?  If not,
 the code does not explicitly clear them if the corresponding bits in the
 query message are clear. (Perhaps there should be an assertion?)

 '''src/lib/asiolink/recursive_query.h'''[[BR]]
 !RunningQuery: Agree that the cache should be initialized in the resolver
 class.  The cache should be a singleton - if !RecursiveQuery is the code
 that handles an upstream fetch, placing it here suggests that either each
 upstream query has its own cache, or that the singleton cache is
 (re)initialized on every fetch.

 '''src/lib/asiolink/recursive_query.cc'''[[BR]]
 RunningQuery::handleRecursiveAnswer(): In the code handling
 ResponseClassifier::REFERRAL, when a glue address is found, there should
 be a "break" to exit the loop.

 RunningQuery::stop(); The comment is confusing - I'm not clear as to the
 "either or" - either a "full answer" (answer to the original query?) is
 cache or answer (answer to an upstream fetch?) is cached; why not both?

 RunningQuery::operator(): Should the query be placed into the cache before
 checking with !ResponseClassifier?  This could lead to erroneous messages
 being placed there.

 Comment: RecursiveQuery::resolver() - agree that the cache should set the
 RCODE as well.


 '''src/lib/cache/message_cache.cc'''[[BR]]
 MessageCache::lookup(): Outputs a debug message.

 MessageCache::update(): Outputs a debug message.


 '''src/lib/cache/resolver_cache.cc'''[[BR]]
 ResolverCache::update(): redundant creation of an RRClass object.

 '''src/lib/resolve/resolve.cc'''[[BR]]
 initResponseMessage(): should either assert that the question section of
 the answer section is empty before appending the question section of the
 query to it, or update the Message class to allow sections to be copied
 between messages.

 '''src/lib/resolve/resolve.h'''[[BR]]
 In the first header for initResponseMessage, the description of
 reponse_message says "must be type Message::RENDER".  It's more accurate
 to say that the message must be in RENDER mode.

-- 
Ticket URL: <http://bind10.isc.org/ticket/491#comment:5>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list