FreeBSD Bugzilla – Attachment 163334 Details for
Bug 204682
mail/spamassassin: fix (a new) DNS resolving incompatibility with p5-Net-DNS-1.03
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
A patch to fix DNS resolving with Net::DNS 1.03
patch-DnsResolver-2.pm (text/plain), 2.59 KB, created by
Mark.Martinec
on 2015-11-19 16:16:42 UTC
(
hide
)
Description:
A patch to fix DNS resolving with Net::DNS 1.03
Filename:
MIME Type:
Creator:
Mark.Martinec
Created:
2015-11-19 16:16:42 UTC
Size:
2.59 KB
patch
obsolete
>--- 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) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 204682
: 163334 |
163343