]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1462] Add SOA check for the requested SOA serial is greater than
authorXie Jiagui <xiejiagui@cnnic.cn>
Fri, 16 Dec 2011 03:37:48 +0000 (11:37 +0800)
committerXie Jiagui <xiejiagui@cnnic.cn>
Fri, 16 Dec 2011 03:37:48 +0000 (11:37 +0800)
that of the local one.

src/bin/xfrout/tests/xfrout_test.py.in
src/bin/xfrout/xfrout.py.in

index ea4de27a184b08c6c4acea6f3c9dd59f6e0dadcd..b509ab341edade3adea527ba0ffca172891dcac0 100644 (file)
@@ -710,12 +710,13 @@ class TestXfroutSession(TestXfroutSessionBase):
                 self.getmsg(), TEST_ZONE_NAME, TEST_RRCLASS), Rcode.NOERROR())
         self.assertNotEqual(None, self.xfrsess._jnl_reader)
 
-        # Successful case, but as a result of falling back to AXFR-style
-        # IXFR.  A zone iterator should be set up instead of a journal reader.
+        # Successful case, but the requested SOA serial is greater than that of
+        # the local SOA.  Both iterator and jnl_reader should be None,
+        # indicating that the response will contain just one SOA.
         self.mdata = self.create_request_data(ixfr=IXFR_NG_VERSION)
         self.assertEqual(self.xfrsess._xfrout_setup(
                 self.getmsg(), TEST_ZONE_NAME, TEST_RRCLASS), Rcode.NOERROR())
-        self.assertNotEqual(None, self.xfrsess._iterator)
+        self.assertEqual(None, self.xfrsess._iterator)
         self.assertEqual(None, self.xfrsess._jnl_reader)
 
         # Successful case, but the requested SOA serial is equal to that of
@@ -1069,17 +1070,6 @@ class TestXfroutSessionWithSQLite3(TestXfroutSessionBase):
         self.assertEqual(Rcode.NOERROR(), response.get_rcode())
         self.check_axfr_stream(response)
 
-    def test_ixfr_to_axfr(self):
-        self.xfrsess._request_data = \
-            self.create_request_data(ixfr=IXFR_NG_VERSION)
-        XfroutSession._handle(self.xfrsess)
-        response = self.sock.read_msg(Message.PRESERVE_ORDER);
-        self.assertEqual(Rcode.NOERROR(), response.get_rcode())
-        # This is an AXFR-style IXFR.  So the question section should indicate
-        # that it's an IXFR resposne.
-        self.assertEqual(RRType.IXFR(), response.get_question()[0].get_type())
-        self.check_axfr_stream(response)
-
     def test_ixfr_normal_session(self):
         # See testdata/creatediff.py.  There are 8 changes between two
         # versions.  So the answer section should contain all of these and
index 310a0aaca36f6be9b4a78f6f73a5a04b1b3341a9..9aa1887c29878f3699639b7c21d9efc27aeedd18 100755 (executable)
@@ -412,11 +412,9 @@ class XfroutSession():
         # a single SOA record of the server's current version, just as
         # in AXFR".  The claim about AXFR is incorrect, but other than that,
         # we do as the RFC says.
-        # Note: until we complete #1278 we can only check equality of the
-        # two serials.  The "newer version" case would fall back to AXFR-style.
         begin_serial = get_soa_serial(remote_soa.get_rdata()[0])
         end_serial = get_soa_serial(self._soa.get_rdata()[0])
-        if begin_serial == end_serial:
+        if begin_serial >= end_serial:
             # clear both iterator and jnl_reader to signal we won't do
             # iteration in response generation
             self._iterator = None