svn commit: r402285 - in head: japanese/spamassassin mail/spamassassin mail/spamassassin/files

Adam Weinberger adamw at FreeBSD.org
Mon Nov 23 17:00:20 UTC 2015


Author: adamw
Date: Mon Nov 23 17:00:18 2015
New Revision: 402285
URL: https://svnweb.freebsd.org/changeset/ports/402285

Log:
  Add two patches from upstream bug #7265, which fixes incompatibilities with
  Net::DNS 1.03. The FreeBSD p5-Net-DNS port has been downgraded to 1.02 but
  Net::DNS will be re-issued at some point soon. The changes in these patches
  seem to work well with Net::DNS 1.02.
  
  While here, add some TEST_DEPENDS so I can run the plugin-based tests as well.
  
  Bump PORTREVISION for spamassassin and japanese/spamassassin.
  
  PR:		204682
  Submitted by:	Mark.Martinec at ijs.si
  Obtained from:	https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7265

Added:
  head/mail/spamassassin/files/patch-bug7265   (contents, props changed)
Modified:
  head/japanese/spamassassin/Makefile
  head/mail/spamassassin/Makefile

Modified: head/japanese/spamassassin/Makefile
==============================================================================
--- head/japanese/spamassassin/Makefile	Mon Nov 23 16:43:18 2015	(r402284)
+++ head/japanese/spamassassin/Makefile	Mon Nov 23 17:00:18 2015	(r402285)
@@ -1,7 +1,7 @@
 # Created by: TAOKA Fumiyoshi
 # $FreeBSD$
 
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	japanese mail perl5
 PKGNAMEPREFIX=	ja-
 

Modified: head/mail/spamassassin/Makefile
==============================================================================
--- head/mail/spamassassin/Makefile	Mon Nov 23 16:43:18 2015	(r402284)
+++ head/mail/spamassassin/Makefile	Mon Nov 23 17:00:18 2015	(r402285)
@@ -3,7 +3,7 @@
 
 PORTNAME=	spamassassin
 PORTVERSION=	3.4.1
-PORTREVISION?=	4	# also bump japanese/spamassassin
+PORTREVISION?=	5	# also bump japanese/spamassassin
 CATEGORIES?=	mail perl5
 MASTER_SITES=	APACHE/spamassassin/source CPAN/Mail
 DISTNAME=	Mail-SpamAssassin-${PORTVERSION}
@@ -22,6 +22,10 @@ BUILD_DEPENDS=	p5-Encode-Detect>=0:${POR
 RUN_DEPENDS:=	${BUILD_DEPENDS} \
 		re2c>=.12.0:${PORTSDIR}/devel/re2c
 
+.for dep in DCC DKIM MYSQL PGSQL PYZOR RAZOR RELAY_COUNTRY SPF_QUERY SSL
+TEST_DEPENDS+=	${${dep}_RUN_DEPENDS}
+.endfor
+
 CONFLICTS?=	ja-spamassassin-[0-9]*
 
 CPE_VENDOR=	apache

Added: head/mail/spamassassin/files/patch-bug7265
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/spamassassin/files/patch-bug7265	Mon Nov 23 17:00:18 2015	(r402285)
@@ -0,0 +1,83 @@
+--- 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);
+       }
+     }


More information about the svn-ports-all mailing list