my $ttl = 3600;
+ my $audit = { source => 'unknown' };
+
if ( $local ) {
warn "local[$local] $qname $qtype";
$rcode = "NOERROR";
my $rdata;
if ( $qtype eq "A" && $local eq "server" ) {
$rdata = name_ip( $local, $server::ip );
- CouchDB::audit('local', $rdata);
+ $audit->{source} = 'local';
} else {
$rcode = "NXDOMAIN";
}
if ( my $rdata = $ptr_cache->{$1} ) {
$rdata .= '.' . $server::domain_name;
push @ans, Net::DNS::RR->new("$qname $ttl $qclass $qtype $rdata");
- CouchDB::audit('ptr', $rdata );
+ $audit->{source} = 'PTR';
} else {
warn "## ",dump( $ptr_cache );
$rcode = "NXDOMAIN";
}
} elsif ( my $packet = $res->query( $qname, $qtype ) ) {
- CouchDB::audit( 'upstream', $packet );
+ $audit->{source} = 'upstream';
$packet->print;
push @ans, $_ foreach $packet->answer;
$rcode = "NOERROR";
warn "rcode: $rcode ",dump( @ans );
- CouchDB::audit('response', { rcode => $rcode, ans => [ @ans ], auth => [ @auth ], add => [ @add ] });
+ $audit->{rcode} = $rcode;
+ $audit->{ans} = [ @ans ];
+
+ CouchDB::audit( 'response', $audit );
# mark the answer as authoritive (by setting the 'aa' flag
return ($rcode, \@ans, \@auth, \@add, { aa => 1 });