]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Updates from Norbert: The patch attached improves the compatibility of the
authorBert Hubert <bert.hubert@netherlabs.nl>
Fri, 30 May 2008 09:58:41 +0000 (09:58 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Fri, 30 May 2008 09:58:41 +0000 (09:58 +0000)
SQL statements and fixes a bug in the getSOA() method (ttl was a random
value). Credits go to Matti Hiljanen.

git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1181 d19b8d6e-7fed-0310-83ef-9ca221ded41b

modules/opendbxbackend/odbxbackend.cc
modules/opendbxbackend/odbxbackend.hh

index 1cfdfde447dd56a1fd0e741bec5baaaba93d58fd..e8cb0987474283410eab5c12eae5fef12dbd77ec 100644 (file)
@@ -184,12 +184,18 @@ bool OdbxBackend::getSOA( const string& domain, SOAData& sd, DNSPacket* p )
                do
                {
                        sd.serial = 0;
+                       sd.ttl = m_default_ttl;
 
-                       if( ( tmp = odbx_field_value( m_result, 2 ) ) != NULL )
+                       if( ( tmp = odbx_field_value( m_result, 3 ) ) != NULL )
                        {
-                               fillSOAData( string( tmp, odbx_field_length( m_result, 2 ) ), sd );
+                               fillSOAData( string( tmp, odbx_field_length( m_result, 3 ) ), sd );
                        }
 
+                       if( ( tmp = odbx_field_value( m_result, 2 ) ) != NULL )
+                       {
+                               sd.ttl = strtoul( tmp, NULL, 10 );
+                       } 
+
                        if( sd.serial == 0 && ( tmp = odbx_field_value( m_result, 1 ) ) != NULL )
                        {
                                sd.serial = strtol( tmp, NULL, 10 );
index cc44b0d54ddb26d4bb1b4e86af435fa573bd8106..032a994baf967031b734ab772e1c8bce4a520b58 100644 (file)
@@ -123,9 +123,9 @@ public:
                declare( suffix, "sql-lookupid", "Lookup query with id","SELECT r.\"domain_id\", r.\"name\", r.\"type\", r.\"ttl\", r.\"prio\", r.\"content\" FROM \"records\" r WHERE r.\"domain_id\"=:id AND r.\"name\"=':name'" );
                declare( suffix, "sql-lookuptype", "Lookup query with type","SELECT r.\"domain_id\", r.\"name\", r.\"type\", r.\"ttl\", r.\"prio\", r.\"content\" FROM \"records\" r WHERE r.\"name\"=':name' AND r.\"type\"=':type'" );
                declare( suffix, "sql-lookuptypeid", "Lookup query with type and id","SELECT r.\"domain_id\", r.\"name\", r.\"type\", r.\"ttl\", r.\"prio\", r.\"content\" FROM \"records\" r WHERE r.\"domain_id\"=:id AND r.\"name\"=':name' AND r.\"type\"=':type'" );
-               declare( suffix, "sql-lookupsoa","Lookup query for SOA record","SELECT d.\"id\", d.\"auto_serial\", r.\"content\" FROM \"records\" r JOIN \"domains\" d ON r.\"domain_id\"=d.\"id\" WHERE r.\"name\"=':name' AND r.\"type\"='SOA' AND d.\"status\"='A'" );
+               declare( suffix, "sql-lookupsoa","Lookup query for SOA record","SELECT d.\"id\", d.\"auto_serial\", r.\"ttl\", r.\"content\" FROM \"records\" r JOIN \"domains\" d ON r.\"domain_id\"=d.\"id\" WHERE r.\"name\"=':name' AND r.\"type\"='SOA' AND d.\"status\"='A'" );
 
-               declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \"records\" r WHERE r.\"domain_id\"=:id" );
+               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\", d.\"auto_serial\", r.\"content\" FROM \"domains\" d LEFT JOIN \"records\" r ON ( d.\"id\"=r.\"domain_id\" AND r.\"type\"='SOA' ) WHERE d.\"name\"=':name' AND d.\"status\"='A'" );
 
                declare( suffix, "sql-transactbegin", "Start transaction", "BEGIN" );
@@ -135,8 +135,8 @@ public:
                declare( suffix, "sql-insert-slave","Add slave domain", "INSERT INTO \"domains\" ( \"name\", \"type\", \"master\", \"account\" ) VALUES ( '%s', 'SLAVE', '%s', '%s' )" );
                declare( suffix, "sql-insert-record","Feed record into table", "INSERT INTO \"records\" ( \"domain_id\", \"name\", \"type\", \"ttl\", \"prio\", \"content\" ) VALUES ( %d, '%s', '%s', %d, %d, '%s' )" );
 
-               declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" d SET d.\"notified_serial\"=%d WHERE d.\"id\"=%d" );
-               declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" d SET d.\"last_check\"=%d WHERE d.\"id\"=%d" );
+               declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" SET \"notified_serial\"=%d WHERE \"id\"=%d" );
+               declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" SET \"last_check\"=%d WHERE \"id\"=%d" );
 
                declare( suffix, "sql-master", "Get master record for zone", "SELECT d.\"master\" FROM \"domains\" d WHERE d.\"name\"=':name' AND d.\"status\"='A' AND d.\"type\"='SLAVE'" );
                declare( suffix, "sql-supermaster","Get supermaster info", "SELECT s.\"account\" FROM \"supermasters\" s WHERE s.\"ip\"=':ip' AND s.\"nameserver\"=':ns'" );