Changeset 968


Ignore:
Timestamp:
01/08/26 12:41:21 (20 hours ago)
Author:
Kris Deugau
Message:

/branches/cname-collision

Exclude expired records from collision failures
See #72, #88

Location:
branches/cname-collision
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/cname-collision/DNSDB.pm

    r967 r968  
    639639    my $sql = "SELECT count(*) FROM "._rectable($args{defrec}, $args{revrec}).
    640640        " WHERE "._recparent($args{defrec}, $args{revrec})." = ? AND type <> 5 AND $hfield = ?";
     641    if ($args{defrec} eq 'n') {
     642      $sql .= " AND (";
     643      # Expired records
     644      $sql .= "stampactive = 't' AND (expires = 't' AND stamp >= now())";
     645
     646      $sql .= ")";
     647    }
    641648    my @lookupargs = ($args{id}, $hcheck);
    642649    if ($args{update}) {
  • branches/cname-collision/t/cname.t

    r964 r968  
    198198
    199199
     200## Record expiry/valid-after cases
     201subtest 'Record expiry/valid-after' => sub {
     202
     203  subtest 'CNAME add - nonexpiring' => sub {
     204    subtest '  - collision with expired record' => sub {
     205      $newname = 'expired1.expiry1.test';
     206      $newval = 'target.example.com';
     207      ($code, $msg) = $dnsdb->addRec('n', 'n', 4, \$newname, \$rectype, \$newval, 900);
     208      ok( $code eq 'OK', "addRec() claimed success" );
     209      if ($code eq 'OK') {
     210        ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 4 AND host = '$newname' AND stampactive = 'f'");
     211        ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" );
     212      } else {
     213        print "not ok: $msg";
     214      }
     215    };
     216  };
     217
     218};
     219
     220
    200221done_testing();
Note: See TracChangeset for help on using the changeset viewer.