BIND 10 master, updated. 1960b5becbba05570b9c7adf5129e64338659f07 Merge branch 'trac471'
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Mar 16 16:15:05 UTC 2011
The branch, master has been updated
via 1960b5becbba05570b9c7adf5129e64338659f07 (commit)
via 87f24fca3b55591ede24de9f856c807ca65966b1 (commit)
via 61e7f493f8f44c7ccb8f2d9ef0186dd15e499097 (commit)
via 13a3fcfa3f8f256f5185faffededd36bcd03e5b5 (commit)
from f0b271b93312a990a566380815d70b758293934e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 1960b5becbba05570b9c7adf5129e64338659f07
Merge: f0b271b93312a990a566380815d70b758293934e 87f24fca3b55591ede24de9f856c807ca65966b1
Author: Jelte Jansen <jelte at isc.org>
Date: Wed Mar 16 16:43:25 2011 +0100
Merge branch 'trac471'
-----------------------------------------------------------------------
Summary of changes:
src/bin/resolver/resolver.cc | 13 ++++++++++++-
src/bin/resolver/resolver.h | 11 +++++++++++
src/bin/resolver/tests/resolver_config_unittest.cc | 1 +
src/lib/config/module_spec.cc | 19 +++++++++++--------
src/lib/config/tests/module_spec_unittests.cc | 4 ++++
.../testdata/{data22_7.data => data22_10.data} | 1 +
6 files changed, 40 insertions(+), 9 deletions(-)
copy src/lib/config/tests/testdata/{data22_7.data => data22_10.data} (92%)
-----------------------------------------------------------------------
diff --git a/src/bin/resolver/resolver.cc b/src/bin/resolver/resolver.cc
index 7656e2b..7c70395 100644
--- a/src/bin/resolver/resolver.cc
+++ b/src/bin/resolver/resolver.cc
@@ -333,7 +333,8 @@ Resolver::Resolver() :
impl_(new ResolverImpl()),
checkin_(new ConfigCheck(this)),
dns_lookup_(new MessageLookup(this)),
- dns_answer_(new MessageAnswer)
+ dns_answer_(new MessageAnswer),
+ configured_(false)
{}
Resolver::~Resolver() {
@@ -548,6 +549,15 @@ Resolver::updateConfig(ConstElementPtr config) {
if (listenAddressesE) {
setListenAddresses(listenAddresses);
need_query_restart = true;
+ } else {
+ if (!configured_) {
+ // TODO: ModuleSpec needs getDefault()
+ AddressList initial_addresses;
+ initial_addresses.push_back(AddressPair("127.0.0.1", 53));
+ initial_addresses.push_back(AddressPair("::1", 53));
+ setListenAddresses(initial_addresses);
+ need_query_restart = true;
+ }
}
if (forwardAddressesE) {
setForwardAddresses(forwardAddresses);
@@ -566,6 +576,7 @@ Resolver::updateConfig(ConstElementPtr config) {
impl_->queryShutdown();
impl_->querySetup(*dnss_, *nsas_, *cache_);
}
+ setConfigured();
return (isc::config::createAnswer());
} catch (const isc::Exception& error) {
dlog(string("error in config: ") + error.what(),true);
diff --git a/src/bin/resolver/resolver.h b/src/bin/resolver/resolver.h
index d851656..002e58b 100644
--- a/src/bin/resolver/resolver.h
+++ b/src/bin/resolver/resolver.h
@@ -119,6 +119,13 @@ public:
asiolink::SimpleCallback* getCheckinProvider() { return (checkin_); }
/**
+ * \brief Tell the Resolver that is has already been configured
+ * so that it will only set some defaults the first time
+ * (used by updateConfig() and tests)
+ */
+ void setConfigured() { configured_ = true; };
+
+ /**
* \brief Specify the list of upstream servers.
*
* Specify the list off addresses of upstream servers to forward queries
@@ -229,6 +236,10 @@ private:
asiolink::DNSAnswer* dns_answer_;
isc::nsas::NameserverAddressStore* nsas_;
isc::cache::ResolverCache* cache_;
+ // This value is initally false, and will be set to true
+ // when the initial configuration is done (updateConfig
+ // should act a tiny bit different on the very first call)
+ bool configured_;
};
#endif // __RESOLVER_H
diff --git a/src/bin/resolver/tests/resolver_config_unittest.cc b/src/bin/resolver/tests/resolver_config_unittest.cc
index 1d6415b..2fa62e5 100644
--- a/src/bin/resolver/tests/resolver_config_unittest.cc
+++ b/src/bin/resolver/tests/resolver_config_unittest.cc
@@ -42,6 +42,7 @@ class ResolverConfig : public ::testing::Test {
dnss(ios, NULL, NULL, NULL)
{
server.setDNSService(dnss);
+ server.setConfigured();
}
void invalidTest(const string &JSON, const string& name);
};
diff --git a/src/lib/config/module_spec.cc b/src/lib/config/module_spec.cc
index fd07dde..1621fe3 100644
--- a/src/lib/config/module_spec.cc
+++ b/src/lib/config/module_spec.cc
@@ -372,15 +372,18 @@ ModuleSpec::validateSpecList(ConstElementPtr spec, ConstElementPtr data,
BOOST_FOREACH(maptype m, data->mapValue()) {
bool found = false;
- BOOST_FOREACH(ConstElementPtr cur_spec_el, spec->listValue()) {
- if (cur_spec_el->get("item_name")->stringValue().compare(m.first) == 0) {
- found = true;
+ // Ignore 'version' as a config element
+ if (m.first.compare("version") != 0) {
+ BOOST_FOREACH(ConstElementPtr cur_spec_el, spec->listValue()) {
+ if (cur_spec_el->get("item_name")->stringValue().compare(m.first) == 0) {
+ found = true;
+ }
}
- }
- if (!found) {
- validated = false;
- if (errors) {
- errors->add(Element::create("Unknown item " + m.first));
+ if (!found) {
+ validated = false;
+ if (errors) {
+ errors->add(Element::create("Unknown item " + m.first));
+ }
}
}
}
diff --git a/src/lib/config/tests/module_spec_unittests.cc b/src/lib/config/tests/module_spec_unittests.cc
index 59f5459..1b43350 100644
--- a/src/lib/config/tests/module_spec_unittests.cc
+++ b/src/lib/config/tests/module_spec_unittests.cc
@@ -162,6 +162,10 @@ TEST(ModuleSpec, DataValidation) {
EXPECT_FALSE(dataTest(dd, "data22_8.data"));
EXPECT_FALSE(dataTest(dd, "data22_9.data"));
+ // Test if "version" is allowed in config data
+ // (same data as 22_7, but added "version")
+ EXPECT_TRUE(dataTest(dd, "data22_10.data"));
+
ElementPtr errors = Element::createList();
EXPECT_FALSE(dataTestWithErrors(dd, "data22_8.data", errors));
EXPECT_EQ("[ \"Type mismatch\" ]", errors->str());
diff --git a/src/lib/config/tests/testdata/data22_10.data b/src/lib/config/tests/testdata/data22_10.data
new file mode 100644
index 0000000..fed4001
--- /dev/null
+++ b/src/lib/config/tests/testdata/data22_10.data
@@ -0,0 +1,11 @@
+{
+ "version": 123,
+ "value1": 1,
+ "value2": 2.3,
+ "value3": true,
+ "value4": "foo",
+ "value5": [ 1, 2, 3 ],
+ "value6": { "v61": "bar", "v62": true },
+ "value8": [ { "a": "d" }, { "a": "e" } ],
+ "value9": { "v91": "hi", "v92": { "v92a": "Hi", "v92b": 3 } }
+}
More information about the bind10-changes
mailing list