]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2427] Origin handling in $INCLUDE
authorMichal 'vorner' Vaner <michal.vaner@nic.cz>
Fri, 14 Dec 2012 13:29:50 +0000 (14:29 +0100)
committerMichal 'vorner' Vaner <michal.vaner@nic.cz>
Fri, 14 Dec 2012 13:29:50 +0000 (14:29 +0100)
src/lib/dns/master_loader.cc
src/lib/dns/tests/master_loader_unittest.cc

index d82f462623bf8579f2002139014eada67f80ff16..46446590eae7975126de8b718a4aad82e0152219 100644 (file)
@@ -128,7 +128,12 @@ public:
 
         if (name_tok.getType() == MasterToken::QSTRING ||
             name_tok.getType() == MasterToken::STRING) {
-            // TODO: Handle the origin. Once we complete #2427.
+            // There's an optional name, meaning origin. Extract it
+            // and store.
+            const MasterToken::StringRegion&
+                name_string(name_tok.getStringRegion());
+            active_origin_ = Name(name_string.beg, name_string.len,
+                                  &active_origin_);
         } else {
             // We return the newline there. This is because after we pop
             // the source, we want to call eatUntilEOL and this would
index d482d498759a1e1adb38af288c1a13db2d08e6a9..2c9f8b152ec29a55d5cea4d6700576e78fb8404c 100644 (file)
@@ -331,7 +331,7 @@ struct ErrorCase {
     { "$INCLUDES " TEST_DATA_SRCDIR "/example.org", "Include too long" },
     { "$INCLUDE", "Missing include path" },
     { "$INCLUDE /file/not/found", "Include file not found" },
-    { "$INCLUDE /file/not/found and here goes bunch of garbage",
+    { "$INCLUDE /file/not/found example.org. and here goes bunch of garbage",
         "Include file not found and garbage at the end of line" },
     { "$ORIGIN", "Missing origin name" },
     { "$ORIGIN invalid...name", "Invalid name for origin" },
@@ -411,7 +411,7 @@ TEST_F(MasterLoaderTest, includeWithGarbage) {
     // Include an origin (example.org) because we expect it to be handled
     // soon and we don't want it to break here.
     const string include_str("$INCLUDE " TEST_DATA_SRCDIR
-                             "/example.org example.org bunch of other stuff\n"
+                             "/example.org example.org. bunch of other stuff\n"
                              "www 3600 IN AAAA 2001:db8::1\n");
     stringstream zone_stream(include_str);
     setLoader(zone_stream, Name("example.org."), RRClass::IN(),