NAME Mail::SpamAssassin::DnsResolver - DNS resolution engine DESCRIPTION This is a DNS resolution engine for SpamAssassin, implemented in order to reduce file descriptor usage by Net::DNS and avoid a response collision bug in that module. METHODS $res->load_resolver() Load the "Net::DNS::Resolver" object. Returns 0 if Net::DNS cannot be used, 1 if it is available. $resolver = $res->get_resolver() Return the "Net::DNS::Resolver" object. $res->nameservers() Wrapper for Net::DNS::Reslolver->nameservers to get or set list of nameservers $res->connect_sock() Re-connect to the first nameserver listed in "/etc/resolv.conf" or similar platform-dependent source, as provided by "Net::DNS". $res->get_sock() Return the "IO::Socket::INET" object used to communicate with the nameserver. $packet = new_dns_packet ($host, $type, $class) A wrapper for "Net::DNS::Packet::new()" which traps a die thrown by it. To use this, change calls to "Net::DNS::Resolver::bgsend" from: $res->bgsend($hostname, $type); to: $res->bgsend(Mail::SpamAssassin::DnsResolver::new_dns_packet($hostname, $type, $class)); $id = $res->bgsend($host, $type, $class, $cb) Quite similar to "Net::DNS::Resolver::bgsend", except that when a response packet eventually arrives, and "poll_responses" is called, the callback sub reference $cb will be called. Note that $type and $class may be "undef", in which case they will default to "A" and "IN", respectively. The callback sub will be called with two arguments -- the packet that was delivered and an id string that fingerprints the query packet and the expected reply. It is expected that a closure callback be used, like so: my $id = $self->{resolver}->bgsend($host, $type, undef, sub { my $reply = shift; my $reply_id = shift; $self->got_a_reply ($reply, $reply_id); }); The callback can ignore the reply as an invalid packet sent to the listening port if the reply id does not match the return value from bgsend. $nfound = $res->poll_responses() See if there are any "bgsend" response packets ready, and return the number of such packets delivered to their callbacks. $res->bgabort() Call this to release pending requests from memory when aborting backgrounded requests $packet = $res->send($name, $type, $class) Emulates "Net::DNS::Resolver::send()". $res->finish_socket() Reset socket when done with it. $res->finish() Clean up for destruction.