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;