diff options
Diffstat (limited to 'mail/spamassassin/files/patch-bug7265')
-rw-r--r-- | mail/spamassassin/files/patch-bug7265 | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/mail/spamassassin/files/patch-bug7265 b/mail/spamassassin/files/patch-bug7265 deleted file mode 100644 index b8cf28f1d456..000000000000 --- a/mail/spamassassin/files/patch-bug7265 +++ /dev/null @@ -1,83 +0,0 @@ ---- lib/Mail/SpamAssassin/DnsResolver.pm (revision 1715195) -+++ lib/Mail/SpamAssassin/DnsResolver.pm (working copy) -@@ -725,6 +725,37 @@ - - ########################################################################### - -+=item $id = $res->bgread() -+ -+Similar to C<Net::DNS::Resolver::bgread>. Reads a DNS packet from -+a supplied socket, decodes it, and returns a Net::DNS::Packet object -+if successful. Dies on error. -+ -+=cut -+ -+sub bgread() { -+ my ($self) = @_; -+ my $sock = $self->{sock}; -+ my $packetsize = $self->{res}->udppacketsize; -+ $packetsize = 512 if $packetsize < 512; # just in case -+ my $data = ''; -+ my $peeraddr = $sock->recv($data, $packetsize+256); # with some size margin for troubleshooting -+ defined $peeraddr or die "bgread: recv() failed: $!"; -+ my $peerhost = $sock->peerhost; -+ $data ne '' or die "bgread: received empty packet from $peerhost"; -+ dbg("dns: bgread: received %d bytes from %s", length($data), $peerhost); -+ my($answerpkt, $decoded_length) = Net::DNS::Packet->new(\$data); -+ $answerpkt or die "bgread: decoding DNS packet failed: $@"; -+ $answerpkt->answerfrom($peerhost); -+ if ($decoded_length ne length($data)) { -+ warn sprintf("bgread: received a %d bytes packet from %s, decoded %d bytes\n", -+ length($data), $peerhost, $decoded_length); -+ } -+ return $answerpkt; -+} -+ -+########################################################################### -+ - =item $nfound = $res->poll_responses() - - See if there are any C<bgsend> reply packets ready, and return -@@ -772,13 +803,25 @@ - $timeout = 0; # next time around collect whatever is available, then exit - last if $nfound == 0; - -- my $packet = $self->{res}->bgread($self->{sock}); -+ my $packet; -+ eval { -+ $packet = $self->bgread(); -+ } or do { -+ undef $packet; -+ my $eval_stat = $@ ne '' ? $@ : "errno=$!"; chomp $eval_stat; -+ # resignal if alarm went off -+ die $eval_stat if $eval_stat =~ /__alarm__ignore__\(.*\)/s; -+ info("dns: bad dns reply: %s", $eval_stat); -+ }; - -+# Bug 7265, use our own bgread() -+# my $packet = $self->{res}->bgread($self->{sock}); -+ - if (!$packet) { -- my $dns_err = $self->{res}->errorstring; -- # resignal if alarm went off -- die "dns (3) $dns_err\n" if $dns_err =~ /__alarm__ignore__\(.*\)/s; -- info("dns: bad dns reply: $dns_err"); -+ # error already reported above -+# my $dns_err = $self->{res}->errorstring; -+# die "dns (3) $dns_err\n" if $dns_err =~ /__alarm__ignore__\(.*\)/s; -+# info("dns: bad dns reply: $dns_err"); - } else { - my $header = $packet->header; - if (!$header) { ---- lib/Mail/SpamAssassin/Plugin/DKIM.pm (revision 1715196) -+++ lib/Mail/SpamAssassin/Plugin/DKIM.pm (working copy) -@@ -794,7 +794,8 @@ - # Only do so if EDNS0 provides a reasonably-sized UDP payload size, - # as our interface does not provide a DNS fallback to TCP, unlike - # the Net::DNS::Resolver::send which does provide it. -- my $res = $self->{main}->{resolver}->get_resolver; -+ my $res = $self->{main}->{resolver}; -+ dbg("dkim: providing our own resolver: %s", ref $res); - Mail::DKIM::DNS::resolver($res); - } - } |