[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pdns-dev
Subject:    [Pdns-dev] [opendbx] Bugfix + Feature
From:       Norbert Sendetzky <norbert () linuxnetworks ! de>
Date:       2006-01-29 0:40:04
Message-ID: 200601290140.05021.norbert () linuxnetworks ! de
[Download RAW message or body]

[Attachment #2 (multipart/signed)]

[Attachment #4 (multipart/mixed)]


Hi Bert

Could you please include this diff before releasing 2.9.20?
It contains a bugfix for the slaveinfo/masterinfo code and implements SOA 
autoserials in getDomainInfo().

Thanks


Norbert
-- 
OpenPGP public key
http://www.linuxnetworks.de/norbert.pubkey.asc


["opendbxbackend_2006-01-28.diff" (text/x-diff)]

--- pdns-svn/modules/opendbxbackend/odbxbackend.hh	2006-01-28 21:33:21.976131736 \
                +0100
+++ pdns-svn.new/modules/opendbxbackend/odbxbackend.hh	2006-01-28 20:56:07.000000000 \
+0100 @@ -121,7 +121,7 @@
 		declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT \
domain_id, name, type, ttl, prio, content FROM records WHERE domain_id=':id' AND \
name=':name' AND type=':type'" );  
 		declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \
                records WHERE domain_id=':id'" );
-		declare( suffix, "sql-zoneinfo","Get domain info","SELECT d.id, d.name, d.type, \
d.master, d.last_check, r.content FROM domains AS d LEFT JOIN records AS r ON \
d.id=r.domain_id WHERE ( d.name=':name' AND r.type='SOA' ) OR ( d.name=':name' AND \
r.domain_id IS NULL )" ); +		declare( suffix, "sql-zoneinfo","Get domain \
info","SELECT d.id, d.name, d.type, d.master, d.last_check, r.content, r.change_date \
FROM domains AS d LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( d.name=':name' \
AND r.type='SOA' ) OR ( d.name=':name' AND r.domain_id IS NULL )" );  
 		declare( suffix, "sql-transactbegin", "Start transaction", "BEGIN" );
 		declare( suffix, "sql-transactend", "Finish transaction", "COMMIT" );
@@ -136,8 +136,8 @@
 		declare( suffix, "sql-master", "Get master record for zone", "SELECT master FROM \
domains WHERE name=':name' AND type='SLAVE'" );  declare( suffix, \
"sql-supermaster","Get supermaster info", "SELECT account FROM supermasters WHERE \
ip=':ip' AND nameserver=':ns'" );  
-		declare( suffix, "sql-infoslaves", "Get all unfresh slaves", "SELECT d.id, d.name, \
d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM domains AS d \
LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( d.type='SLAVE' AND r.type='SOA' ) \
                OR ( d.type='SLAVE' AND r.domain_id IS NULL )" );
-		declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.id, \
d.name, d.master, d.notified_serial, d.last_check, r.change_date, r.content FROM \
domains AS d, records AS r WHERE d.type='MASTER' AND d.id=r.domain_id AND \
r.type='SOA'" ); +		declare( suffix, "sql-infoslaves", "Get all unfresh slaves", \
"SELECT d.id, d.name, d.master, d.notified_serial, d.last_check, r.content, \
r.change_date FROM domains AS d LEFT JOIN records AS r ON d.id=r.domain_id WHERE ( \
d.type='SLAVE' AND r.type='SOA' ) OR ( d.type='SLAVE' AND r.domain_id IS NULL )" ); \
+		declare( suffix, "sql-infomasters", "Get all updated masters", "SELECT d.id, \
d.name, d.master, d.notified_serial, d.last_check, r.content, r.change_date FROM \
domains AS d, records AS r WHERE d.type='MASTER' AND d.id=r.domain_id AND \
r.type='SOA'" );  }
 
 
--- pdns-svn/modules/opendbxbackend/odbxbackend.cc	2006-01-28 21:33:21.978131432 \
                +0100
+++ pdns-svn.new/modules/opendbxbackend/odbxbackend.cc	2006-01-28 21:21:33.000000000 \
+0100 @@ -65,6 +65,7 @@
 bool OdbxBackend::getDomainInfo( const string& domain, DomainInfo& di )
 {
 	const char* tmp;
+	SOAData sd;
 	string stmt;
 
 
@@ -86,7 +87,7 @@
 			di.notified_serial = 0;
 			di.kind = DomainInfo::Native;
 			di.backend = this;
-			di.serial = 0;
+			sd.serial = 0;
 
 			if( ( tmp = odbx_field_value( m_result, 0 ) ) != NULL )
 			{
@@ -115,19 +116,22 @@
 				di.master = string( tmp );
 			}
 
-			if( ( tmp = odbx_field_value( m_result, 5 ) ) != NULL )
+			if( ( tmp = odbx_field_value( m_result, 4 ) ) != NULL )
 			{
 				di.last_check = strtol( tmp, NULL, 10 );
 			}
 
-			if( ( tmp = odbx_field_value( m_result, 6 ) ) != NULL )
+			if( ( tmp = odbx_field_value( m_result, 5 ) ) != NULL )
 			{
-				SOAData sd;
-
-				sd.serial = 0;
-					DNSPacket::fillSOAData( string( tmp ), sd );
-				di.serial = sd.serial;
+				DNSPacket::fillSOAData( string( tmp ), sd );
+			}
+			
+			if( !sd.serial && ( tmp = odbx_field_value( m_result, 6 ) ) != NULL )
+			{
+				sd.serial = strtol( tmp, NULL, 10 );
 			}
+			
+			di.serial = sd.serial;
 		}
 		while( getRecord() );
 	}
--- pdns-svn/modules/opendbxbackend/odbxprivate.cc	2006-01-28 21:33:21.981130976 \
                +0100
+++ pdns-svn.new/modules/opendbxbackend/odbxprivate.cc	2006-01-28 21:22:12.000000000 \
+0100 @@ -126,12 +126,12 @@
 		sd.serial = 0;
 		sd.refresh = 0;
 
-		if( ( tmp = odbx_field_value( m_result, 6 ) ) != NULL )
+		if( ( tmp = odbx_field_value( m_result, 5 ) ) != NULL )
 		{
 			DNSPacket::fillSOAData( string( tmp ), sd );
 		}
 
-		if( !sd.serial && ( tmp = odbx_field_value( m_result, 5 ) ) != NULL )
+		if( !sd.serial && ( tmp = odbx_field_value( m_result, 6 ) ) != NULL )
 		{
 			sd.serial = strtol( tmp, NULL, 10 );
 		}


[Attachment #8 (application/pgp-signature)]

_______________________________________________
Pdns-dev mailing list
Pdns-dev@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-dev


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic