Browse Source

[2427] Origin handling in $INCLUDE

Michal 'vorner' Vaner 12 years ago
parent
commit
d0f80f2a66
2 changed files with 8 additions and 3 deletions
  1. 6 1
      src/lib/dns/master_loader.cc
  2. 2 2
      src/lib/dns/tests/master_loader_unittest.cc

+ 6 - 1
src/lib/dns/master_loader.cc

@@ -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

+ 2 - 2
src/lib/dns/tests/master_loader_unittest.cc

@@ -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(),