You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2011/09/21 04:13:30 UTC

svn commit: r1173462 - in /spamassassin/trunk: lib/Mail/SpamAssassin/Client.pm spamd/spamd.raw t/SATest.pm

Author: mmartinec
Date: Wed Sep 21 02:13:30 2011
New Revision: 1173462

URL: http://svn.apache.org/viewvc?rev=1173462&view=rev
Log:
Bug 6547: Client.pm uses IO::Socket::INET, not IPv6 compatible; let the spamd -A default include also the ::1 in addition to 127.0.0.1

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Client.pm
    spamassassin/trunk/spamd/spamd.raw
    spamassassin/trunk/t/SATest.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Client.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Client.pm?rev=1173462&r1=1173461&r2=1173462&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Client.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Client.pm Wed Sep 21 02:13:30 2011
@@ -21,13 +21,13 @@ Mail::SpamAssassin::Client - Client for 
 
 =head1 SYNOPSIS
 
-  my $client = new Mail::SpamAssassin::Client({
+  my $client = Mail::SpamAssassin::Client->new({
                                 port => 783,
                                 host => 'localhost',
                                 username => 'someuser'});
   or
 
-  my $client = new Mail::SpamAssassin::Client({
+  my $client = Mail::SpamAssassin::Client->new({
                                 socketpath => '/path/to/socket',
                                 username => 'someuser'});
 
@@ -60,6 +60,22 @@ use re 'taint';
 use IO::Socket;
 use Errno qw(EBADF);
 
+our($have_inet4, $have_inet6);
+BEGIN {
+  $have_inet4 = eval {
+    require IO::Socket::INET;
+    my $sock = IO::Socket::INET->new(LocalAddr => '0.0.0.0', Proto => 'udp');
+    $sock->close or die "error closing inet socket: $!"  if $sock;
+    $sock ? 1 : undef;
+  };
+  $have_inet6 = eval {
+    require IO::Socket::INET6;
+    my $sock = IO::Socket::INET6->new(LocalAddr => '::', Proto => 'udp');
+    $sock->close or die "error closing inet6 socket: $!"  if $sock;
+    $sock ? 1 : undef;
+  };
+}
+
 my $EOL = "\015\012";
 my $BLANK = $EOL x 2;
 my $PROTOVERSION = 'SPAMC/1.5';
@@ -449,11 +465,17 @@ sub _create_connection {
 				   );
   }
   else {
-    $remote = IO::Socket::INET->new( Proto     => "tcp",
-				     PeerAddr  => $self->{host},
-				     PeerPort  => $self->{port},
-				     Timeout   => $self->{timeout},
-				   );
+    my %params = ( Proto    => "tcp",
+		   PeerAddr => $self->{host},
+		   PeerPort => $self->{port},
+		   Timeout  => $self->{timeout},
+		  );
+    my $is_inet4 = $self->{host} =~ /^\d+\.\d+\.\d+\.\d+\z/;
+    if ($have_inet4 && ($is_inet4 || !$have_inet6)) {
+      $remote = IO::Socket::INET->new( %params );
+    } else {
+      $remote = IO::Socket::INET6->new( %params );
+    }
   }
 
   unless ($remote) {

Modified: spamassassin/trunk/spamd/spamd.raw
URL: http://svn.apache.org/viewvc/spamassassin/trunk/spamd/spamd.raw?rev=1173462&r1=1173461&r2=1173462&view=diff
==============================================================================
--- spamassassin/trunk/spamd/spamd.raw (original)
+++ spamassassin/trunk/spamd/spamd.raw Wed Sep 21 02:13:30 2011
@@ -392,7 +392,7 @@ if ( not defined $opt{'socketpath'} ) {
     set_allowed_ip( grep length, map { split /,/ } @{ $opt{'allowed-ip'} } );
   }
   else {
-    set_allowed_ip('127.0.0.1'); #, '::1'); M::SA::NetSet needs fixing for IPv6
+    set_allowed_ip('127.0.0.1', '::1');
   }
 }
 
@@ -3216,7 +3216,8 @@ C<10.200.300.*>.
 
 B<-A 10.> -- allow connections from any machine in the range C<10.*.*.*>.
 
-By default, connections are only accepted from localhost [127.0.0.1].
+By default, connections are only accepted from localhost (IP address 127.0.0.1
+or ::1 ).
 
 =item B<-D> [I<area,...>], B<--debug> [I<area,...>]
 

Modified: spamassassin/trunk/t/SATest.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/SATest.pm?rev=1173462&r1=1173461&r2=1173462&view=diff
==============================================================================
--- spamassassin/trunk/t/SATest.pm (original)
+++ spamassassin/trunk/t/SATest.pm Wed Sep 21 02:13:30 2011
@@ -16,7 +16,11 @@ BEGIN {
   #   <http://www.mail-archive.com/dev%40perl.apache.org/msg05466.html>
   #  -- mss, 2004-01-13
   our $RUNNING_ON_WINDOWS = ($^O =~ /^(mswin|dos|os2)/oi);
-  our $SKIP_SPAMD_TESTS = ($RUNNING_ON_WINDOWS || ($ENV{'SPAMD_HOST'} && ($ENV{'SPAMD_HOST'} ne '127.0.0.1')));
+  our $SKIP_SPAMD_TESTS =
+        $RUNNING_ON_WINDOWS ||
+        ( $ENV{'SPAMD_HOST'} && !($ENV{'SPAMD_HOST'} eq '127.0.0.1' ||
+                                  $ENV{'SPAMD_HOST'} eq '::1' ||
+                                  $ENV{'SPAMD_HOST'} eq 'localhost') );
   our $NO_SPAMC_EXE;
   our $SKIP_SPAMC_TESTS;
   our $SSL_AVAILABLE;