BIND 10 #1262: AXFR-style IXFR-in protocol handling

BIND 10 Development do-not-reply at isc.org
Thu Oct 6 06:30:37 UTC 2011


#1262: AXFR-style IXFR-in protocol handling
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:  jinmei
  jinmei                             |                Status:  reviewing
                       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):

 I have some points to discuss that may be debatable.  To save time,
 however, I made suggested changes on the branch.  If you agree with
 the sense of the change and the changes themselves, I have no further
 issue.  As soon as #1261 is merged, this branch can be merged too.

 If you don't agree or do want to make more changes, please respond
 (the committed changes were just a suggestion, not a requiremnet).

 Postponing other things is okay for me.

 Specific comments and suggestions below:

 '''XfrinAXFR class'''

 I'd use conn._diff instead of an attribute of XfrinAXFR class for the
 Diff object of AXFR.  One reason is that XfrinState classes are
 expected to be "stateless" (so they wouldn't have a mutable member
 attribute).  More important reason is that I'd delay the commit until
 XfrinAXFREnd.finish_message() (which is the topic of the next
 paragraph), and to keep the diff over multiple states it would be
 easier to hold it in XfrinConn (as indicated in your comment).

 Now, as for delaying commit.  In case of AXFR, I believe we should
 perform some more stricter checks on the received zone, e.g., whether
 the zone has an NS RR before actually publishing the zone (BIND 9
 behaves that way).  We could do this at the end of the XfrinAXFR
 state, but if we do this check I'd also include other checks such
 as whether the message doesn't contain a bogus trailing RR.

 (Note also that to perform such check we need to ensure all buffered
 changes in Diff are really pushed to the data source before actually
 committing the transaction.  So we'll need some extension to the
 Diff object, or we may simply want to use an updater directly for
 AXFR.   But that should be beyond the scope of this task)

 I made my proposed change based on this.  It's commit

 '''xfrin_test'''

 I would add some higher level tests, i.e., AXFR-style versions of
 TestIXFRSession and TestIXFRSessionWithSQLite3.  I added some
 suggested tests to the branch.

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


More information about the bind10-tickets mailing list