BIND 10 #1261: IXFR-in protocol handling

BIND 10 Development do-not-reply at isc.org
Wed Oct 5 08:36:12 UTC 2011


#1261: IXFR-in protocol handling
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:  jinmei
  jinmei                             |                Status:  accepted
                       Type:  task   |             Milestone:
                   Priority:         |  Sprint-20111011
  blocker                            |            Resolution:
                  Component:  xfrin  |             Sensitive:  0
                   Keywords:         |           Sub-Project:  DNS
            Defect Severity:  N/A    |  Estimated Difficulty:  0
Feature Depending on Ticket:         |           Total Hours:  0
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------

Comment (by jinmei):

 trac1261 is ready for review.

 It turned out to be a bit bigger than I originally expected (as a
 hindsight we could have separated this task for the send-query part
 and the handle-response part).  I also needed to do some small
 changes in various places (not only for xfrin) to make it really work.

 My suggestion for the reviewer is:
 - first look at the diff for the "send query" part.  It can be
   retrieved by 'git diff e4c78a2^..38e530b'  This is reasonably small
   and I believe it is quite straightforward.
 - commits for the Diff python lib (3bfaa40 and f6c675c) and commit for
   sqlite3 accessor (2de8b71) are not directly related to xfrin, but
   were necessary to make it work.  See the commit logs for the
   rationale of the change.  These can be reviewed separately.
 - The others are mainly for the "handle response" part (and a bunch of
   small cleanups).

 As for the last part, it basically copies the current AXFR-only
 implementation to (_handle_axfrin_response() - a bit renamed) to a
 separate method (_handle_xfrin_responses()) and adjusts it to support
 the IXFR protocol.  As for the protocol handling, I basically ported
 the BIND 9's xfrin logic (implemented in xfr_rr() and
 xfrin_recv_done() of lib/dns/xfrin.c) in relatively straightforward
 way, but using the state design pattern instead of the compound
 switch-case structure.  This decision may be debatable - I thought the
 size of the original switch-case (with goto's) was already unreadable
 enough and refactoring the code in a more object-oriented way made
 sense here (and the abstraction overhead wouldn't matter much for
 xfrin).

 I don't think we need a changelog entry yet (we'll probably need one
 when #1262 is completed).

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


More information about the bind10-tickets mailing list