[svn] commit: r856 - in /branches/each-ds/src/lib: auth/cpp/data_source.cc auth/cpp/data_source_sqlite3.cc dns/cpp/rrset.cc dns/cpp/rrset.h
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Feb 17 20:26:04 UTC 2010
Author: each
Date: Wed Feb 17 20:26:04 2010
New Revision: 856
Log:
- fix a bug in DNAME/CNAME synthesis
- fix a bug in the new RRset structure (with contained RRSIGs)
- add RRSIGs to RRSets in SQL data source
Modified:
branches/each-ds/src/lib/auth/cpp/data_source.cc
branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
branches/each-ds/src/lib/dns/cpp/rrset.cc
branches/each-ds/src/lib/dns/cpp/rrset.h
Modified: branches/each-ds/src/lib/auth/cpp/data_source.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source.cc Wed Feb 17 20:26:04 2010
@@ -170,16 +170,18 @@
}
if (found) {
+ if (RRsetPtr r = ref[RRType::DNAME()]) {
+ RRsetList syn;
+ m.addRRset(Section::ANSWER(), r);
+ synthesizeCname(q, task, r, syn);
+ if (syn.size() == 1) {
+ m.addRRset(Section::ANSWER(), syn[0]);
+ chaseCname(q, task, syn[0]);
+ continue;
+ }
+ }
BOOST_FOREACH (RRsetPtr r, ref) {
- if (r->getType() == RRType::DNAME()) {
- RRsetList syn;
- m.addRRset(Section::ANSWER(), r);
- synthesizeCname(q, task, r, syn);
- if (syn.size() == 1) {
- m.addRRset(Section::ANSWER(), syn[0]);
- chaseCname(q, task, syn[0]);
- }
- } else {
+ if (r->getType() != RRType::DNAME()) {
m.addRRset(Section::AUTHORITY(), r);
getAdditional(q, r);
}
Modified: branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc
==============================================================================
--- branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc (original)
+++ branches/each-ds/src/lib/auth/cpp/data_source_sqlite3.cc Wed Feb 17 20:26:04 2010
@@ -3,6 +3,7 @@
#include <dns/rrttl.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
+#include <dns/rrset.h>
#include <dns/rrsetlist.h>
#include <iostream>
@@ -133,8 +134,8 @@
// first time through the loop, initialize RRset
if (rows == 1) {
- rrset = RRsetPtr(new RRset(name, RRClass("IN"),
- found_cname ? RRType("CNAME") : rdtype,
+ rrset = RRsetPtr(new RRset(name, RRClass::IN(),
+ found_cname ? RRType::CNAME() : rdtype,
RRTTL(3600)));
}
@@ -146,6 +147,17 @@
target_ttl = ttl;
}
} else {
+ RdataPtr rrsig = createRdata(RRType::RRSIG(), RRClass::IN(), rdata);
+ if (rrset->getRRsig()) {
+ rrset->getRRsig()->addRdata(rrsig);
+ } else {
+ RRsetPtr sigs = RRsetPtr(new RRset(name, RRClass::IN(),
+ RRType::RRSIG(),
+ RRTTL(3600)));
+ sigs->addRdata(rrsig);
+ rrset->addRRsig(sigs);
+ }
+
if (sig_ttl == -1 || sig_ttl > ttl) {
sig_ttl = ttl;
}
Modified: branches/each-ds/src/lib/dns/cpp/rrset.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rrset.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rrset.cc Wed Feb 17 20:26:04 2010
@@ -177,6 +177,15 @@
{
impl_->ttl_ = ttl;
}
+
+RRset::RRset(const Name& name, const RRClass& rrclass,
+ const RRType& rrtype, const RRTTL& ttl) :
+ BasicRRset(name, rrclass, rrtype, ttl)
+{
+ rrsig_ = BasicRRsetPtr();
+}
+
+RRset::~RRset() {}
namespace {
class BasicRdataIterator : public RdataIterator {
Modified: branches/each-ds/src/lib/dns/cpp/rrset.h
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rrset.h (original)
+++ branches/each-ds/src/lib/dns/cpp/rrset.h Wed Feb 17 20:26:04 2010
@@ -177,14 +177,9 @@
typedef boost::shared_ptr<BasicRRset> BasicRRsetPtr;
public:
RRset(const Name& name, const RRClass& rrclass,
- const RRType& rrtype, const RRTTL& ttl) :
- BasicRRset(name, rrclass, rrtype, ttl) {
- rrsig_ = BasicRRsetPtr();
- }
-
- virtual ~RRset() {
- delete rrsig_.get();
- }
+ const RRType& rrtype, const RRTTL& ttl);
+
+ virtual ~RRset();
virtual void addRRsig(AbstractRRset& sigs) {
RdataIteratorPtr it = sigs.getRdataIterator();
More information about the bind10-changes
mailing list