BIND 10 #2905: buggy zone should result in SERVFAIL, not REFUSED

BIND 10 Development do-not-reply at isc.org
Wed Apr 10 23:21:43 UTC 2013


#2905: buggy zone should result in SERVFAIL, not REFUSED
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:
  jinmei                             |                Status:  new
                       Type:         |             Milestone:  Next-Sprint-
  defect                             |  Proposed
                   Priority:         |              Keywords:
  medium                             |             Sensitive:  0
                  Component:  data   |           Sub-Project:  DNS
  source                             |  Estimated Difficulty:  0
               CVSS Scoring:         |           Total Hours:  0
            Defect Severity:  N/A    |
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------
 With the current implementation of in-memory data source, if a zone
 is configured to be loaded to memory but the load of the zone failed
 due to a non fatal error (an error in the zone file or post load
 validation failure), the result will be the same as if the zone isn't
 configured to be loaded at all.

 As a result, b10-auth would return REFUSED for queries in the zone
 (if there is no other matching zone in the memory or in other data
 sources), or if a shorter matching zone is loaded, it would search
 that loaded zone.  This is at least different from BIND 9, and I
 believe the BIND 9 behavior is correct: the data source should still
 recognize the zone and return SERVFAIL to queries for that zone.

 We should be able to do it as follows:
 - wait until #2834 is merged
 - allow `ZoneTable::addZone` to add a NULL `ZoneData`.
 - In `ConfigurableClientList::configure`, if load() fails due to
   `ZoneLoaderException`, add a NULL `ZoneData` to the table.
 - In `InMemoryClient::findZone`, if findZone() returns a NULL
   zone data, return a special `ZoneFinder` that would throw
   `DataSourceError` (or something) on any method that would require
   `ZoneData`.

 This way, I believe we don't have to update b10-auth itself.

-- 
Ticket URL: <http://bind10.isc.org/ticket/2905>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list