From: Michal 'vorner' Vaner Date: Fri, 14 Dec 2012 13:29:50 +0000 (+0100) Subject: [2427] Origin handling in $INCLUDE X-Git-Tag: bind10-1.0.0-beta-release~13^2^2~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d0f80f2a66545a7247e97e7a17c26ae812349d26;p=thirdparty%2Fkea.git [2427] Origin handling in $INCLUDE --- diff --git a/src/lib/dns/master_loader.cc b/src/lib/dns/master_loader.cc index d82f462623..46446590ea 100644 --- a/src/lib/dns/master_loader.cc +++ b/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 diff --git a/src/lib/dns/tests/master_loader_unittest.cc b/src/lib/dns/tests/master_loader_unittest.cc index d482d49875..2c9f8b152e 100644 --- a/src/lib/dns/tests/master_loader_unittest.cc +++ b/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(),