Folks,

while trying to debug some fpdns streams for name servers that are not or not
reliably identifiable, I've come across a - likely unrelated - problem with the
res->send() invocation.  It appears that the make_query_packet() method in
Base.pm honors the 'recurse' flag even if the packet to be sent comes
pre-built.  Since the default is 'recurse=1', this means that all the
fpdns vectors with Opcode 'QUERY' and a cleared 'rd' bit will actually be
sent with 'rd=1' regardless.

It seems quite straight forward to copy the RD bit from the vector into
the resolver's configuration just before send()ing the packet.

--- Fingerprint.pm.bak  Mon Feb 26 17:30:16 2007
+++ Fingerprint.pm      Thu Jan 17 20:21:32 2008
@@ -710,6 +710,7 @@
     $resolver->retry($self->{retry});
     $resolver->retrans($self->{timeout});
     $resolver->usevc($self->{forcetcp});
+    $resolver->recurse($header->rd);
     my $answer = $resolver->send($packet);
     if ($answer && $self->{debug}) {
        print STDERR "==> ANSWER BEGIN\n";

As always, the usual caveats apply.  Some fingerprints might no longer work.

-Peter
_______________________________________________
fpdns mailing list
[email protected]
https://www.rfc.se/mailman/listinfo/fpdns

Reply via email to