Index: branches/cname-collision/DNSDB.pm
===================================================================
--- branches/cname-collision/DNSDB.pm	(revision 988)
+++ branches/cname-collision/DNSDB.pm	(revision 989)
@@ -33,4 +33,5 @@
 use Fcntl qw(:flock);
 use Time::TAI64 qw(:tai64);
+use Date::Parse;
 
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
Index: branches/cname-collision/t/cname.t
===================================================================
--- branches/cname-collision/t/cname.t	(revision 988)
+++ branches/cname-collision/t/cname.t	(revision 989)
@@ -279,4 +279,21 @@
       }
     };
+    subtest 'expire before valid-after record' => sub {
+      $newname = 'expires-at3.expiry2.test';
+      ($code, $msg) = $dnsdb->addRec('n', 'n', 5, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp);
+      ok( $code eq 'OK', "addRec() returned success" );
+      if ($code eq 'OK') {
+        # crosscheck in the DB
+        ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 5 AND host = '$newname'");
+        ok( $rcount == 2, " ... [$rcount] correct number of records for $newname" );
+        my ($newstamp) = $dbh->selectrow_array("SELECT extract(epoch from stamp) FROM records WHERE domain_id = 5 AND host = '$newname' ".
+               "AND stampactive = 't' AND expires = 't'");
+        my ($oldstamp) = $dbh->selectrow_array("SELECT extract(epoch from stamp) FROM records WHERE domain_id = 5 AND host = '$newname' ".
+               "AND stampactive = 't' AND expires = 'f'");
+        ok( $newstamp <= $oldstamp, " ... added record expires before existing active-after record goes active" );
+      } else {
+        print "not ok: $msg";
+      }
+    };
   }; # add expiring CNAME
 
