[svn:qpsmtpd] r581 - trunk/plugins
[email protected] 28 Nov 2005 19:07:57 -0000
| Newsgroups | perl.cvs.qpsmtpd |
|---|---|
| Message-ID | <[email protected]> |
Author: msergeant
Date: Mon Nov 28 11:07:56 2005
New Revision: 581
Modified:
trunk/plugins/require_resolvable_fromhost
Log:
Fixed to use same subsystem as dnsbl plugin
Modified: trunk/plugins/require_resolvable_fromhost
==============================================================================
--- trunk/plugins/require_resolvable_fromhost (original)
+++ trunk/plugins/require_resolvable_fromhost Mon Nov 28 11:07:56 2005
@@ -28,11 +28,12 @@ sub check_dns {
return DECLINED;
}
- $self->transaction->notes('pending_dns_queries', 2);
+ my $total_queries = 2;
my $qp = $self->qp;
$self->log(LOGDEBUG, "Checking $host for MX record in the background");
Danga::DNS->new(
callback => sub { dns_result($qp, @_) },
+ finished => sub { $total_queries--; finished($qp, $total_queries) },
host => $host,
type => "MX",
client => $qp->input_sock,
@@ -40,19 +41,21 @@ sub check_dns {
$self->log(LOGDEBUG, "Checking $host for A record in the background");
Danga::DNS->new(
callback => sub { dns_result($qp, @_) },
+ finished => sub { $total_queries--; finished($qp, $total_queries) },
host => $host,
client => $qp->input_sock,
);
return CONTINUATION;
}
+sub finished {
+ my ($qp, $total_zones) = @_;
+ $qp->finish_continuation unless $total_zones;
+}
sub dns_result {
my ($qp, $result, $query) = @_;
- my $pending = $qp->transaction->notes('pending_dns_queries');
- $qp->transaction->notes('pending_dns_queries', --$pending);
-
if ($result =~ /^[A-Z]+$/) {
# probably an error
$qp->log(LOGDEBUG, "DNS error: $result looking up $query");
@@ -60,8 +63,6 @@ sub dns_result {
$qp->transaction->notes('resolvable', 1);
$qp->log(LOGDEBUG, "DNS lookup $query returned: $result");
}
-
- $qp->finish_continuation unless $pending;
}