[svn] commit: r1148 - in /trunk/src/lib/auth: data_source_sqlite3.cc data_source_sqlite3.h
BIND 10 source code commits
bind10-changes at lists.isc.org
Sat Mar 6 07:56:10 UTC 2010
Author: jinmei
Date: Sat Mar 6 07:56:09 2010
New Revision: 1148
Log:
- allow the Sqlite3 data source to init itself with a non default DB file
- fixed a TTL setting bug
Modified:
trunk/src/lib/auth/data_source_sqlite3.cc
trunk/src/lib/auth/data_source_sqlite3.h
Modified: trunk/src/lib/auth/data_source_sqlite3.cc
==============================================================================
--- trunk/src/lib/auth/data_source_sqlite3.cc (original)
+++ trunk/src/lib/auth/data_source_sqlite3.cc Sat Mar 6 07:56:09 2010
@@ -32,6 +32,12 @@
namespace isc {
namespace auth {
+
+namespace {
+// Note: this cannot be std::string to avoid
+// "static initialization order fiasco".
+static const char* DEFAULT_DB_FILE = "/tmp/zone.sqlite3";
+}
//
// Prepare a statement. Can call release() or sqlite3_finalize()
@@ -142,8 +148,6 @@
}
// loop
- int target_ttl = -1;
- int sig_ttl = -1;
int rows = 0;
RRsetPtr rrset;
bool any = (rdtype == RRType::ANY());
@@ -184,16 +188,15 @@
}
if (!target[rt]) {
- rrset = RRsetPtr(new RRset(name, RRClass::IN(), rt, RRTTL(3600)));
+ rrset = RRsetPtr(new RRset(name, RRClass::IN(), rt, RRTTL(ttl)));
target.addRRset(rrset);
}
if (!sigtype && RRType(type) == rrset->getType()) {
rrset->addRdata(createRdata(RRType(type), RRClass::IN(), rdata));
- if (target_ttl == -1 || target_ttl > ttl) {
- target_ttl = ttl;
+ if (ttl > rrset->getTTL().getValue()) {
+ rrset->setTTL(RRTTL(ttl));
}
- rrset->setTTL(RRTTL(target_ttl));
} else if (sigtype && RRType(sigtype) == rrset->getType()) {
RdataPtr rrsig = createRdata(RRType::RRSIG(), RRClass::IN(), rdata);
if (rrset->getRRsig()) {
@@ -201,17 +204,16 @@
} else {
RRsetPtr sigs = RRsetPtr(new RRset(name, RRClass::IN(),
RRType::RRSIG(),
- RRTTL(3600)));
+ RRTTL(ttl)));
sigs->addRdata(rrsig);
rrset->addRRsig(sigs);
}
- if (sig_ttl == -1 || sig_ttl > ttl) {
- sig_ttl = ttl;
+ if (ttl > rrset->getRRsig()->getTTL().getValue()) {
+ rrset->getRRsig()->setTTL(RRTTL(ttl));
}
- rrset->getRRsig()->setTTL(RRTTL(sig_ttl));
- }
-
+ }
+
rc = sqlite3_step(query);
}
@@ -464,11 +466,16 @@
}
DataSrc::Result
+Sqlite3DataSrc::init(const string& dbfile) {
+ open(dbfile);
+ cerr << "Schema version: " << getVersion() << endl;
+
+ return (SUCCESS);
+}
+
+DataSrc::Result
Sqlite3DataSrc::init() {
- open("/tmp/zone.sqlite3");
- cerr << "Schema version: " << getVersion() << endl;
-
- return (SUCCESS);
+ return (init(DEFAULT_DB_FILE));
}
void
Modified: trunk/src/lib/auth/data_source_sqlite3.h
==============================================================================
--- trunk/src/lib/auth/data_source_sqlite3.h (original)
+++ trunk/src/lib/auth/data_source_sqlite3.h Sat Mar 6 07:56:09 2010
@@ -95,6 +95,7 @@
isc::dns::RRsetList& target) const;
Result init();
+ Result init(const std::string& dbfile);
Result close();
private:
More information about the bind10-changes
mailing list