Changeset 1181

Show
Ignore:
Timestamp:
05/30/08 11:58:41 (6 months ago)
Author:
ahu
Message:

Updates from Norbert: The patch attached improves the compatibility of the
SQL statements and fixes a bug in the getSOA() method (ttl was a random
value). Credits go to Matti Hiljanen.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/pdns/modules/opendbxbackend/odbxbackend.cc

    r1154 r1181  
    185185                { 
    186186                        sd.serial = 0; 
     187                        sd.ttl = m_default_ttl; 
     188 
     189                        if( ( tmp = odbx_field_value( m_result, 3 ) ) != NULL ) 
     190                        { 
     191                                fillSOAData( string( tmp, odbx_field_length( m_result, 3 ) ), sd ); 
     192                        } 
    187193 
    188194                        if( ( tmp = odbx_field_value( m_result, 2 ) ) != NULL ) 
    189195                        { 
    190                                 fillSOAData( string( tmp, odbx_field_length( m_result, 2 ) ), sd ); 
    191                         } 
     196                                sd.ttl = strtoul( tmp, NULL, 10 ); 
     197                        }  
    192198 
    193199                        if( sd.serial == 0 && ( tmp = odbx_field_value( m_result, 1 ) ) != NULL ) 
  • trunk/pdns/modules/opendbxbackend/odbxbackend.hh

    r1154 r1181  
    124124                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'" ); 
    125125                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'" ); 
    126                 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'" ); 
     126                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'" ); 
    127127 
    128                 declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \"records\" r WHERE r.\"domain_id\"=:id" ); 
     128                declare( suffix, "sql-zonedelete","Delete all records for this zone","DELETE FROM \"records\" WHERE \"domain_id\"=:id" ); 
    129129                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'" ); 
    130130 
     
    136136                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' )" ); 
    137137 
    138                 declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" d SET d.\"notified_serial\"=%d WHERE d.\"id\"=%d" ); 
    139                 declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" d SET d.\"last_check\"=%d WHERE d.\"id\"=%d" ); 
     138                declare( suffix, "sql-update-serial", "Set zone to notified", "UPDATE \"domains\" SET \"notified_serial\"=%d WHERE \"id\"=%d" ); 
     139                declare( suffix, "sql-update-lastcheck", "Set time of last check", "UPDATE \"domains\" SET \"last_check\"=%d WHERE \"id\"=%d" ); 
    140140 
    141141                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'" );