itry to fix outgoing IPV6 connects
authorDirk Koopman <djk@tobit.co.uk>
Mon, 4 Apr 2011 20:54:43 +0000 (21:54 +0100)
committerDirk Koopman <djk@tobit.co.uk>
Mon, 4 Apr 2011 20:54:43 +0000 (21:54 +0100)
Changes
perl/Msg.pm
perl/Version.pm

diff --git a/Changes b/Changes
index 0622f4ac3c14d7f8e07e0f312b24f8b009a8b0d0..12af104e25ccbbf1f2ac316e5825983bcc2f51ed 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,5 @@
+04Apr11=======================================================================
+1. After being poked by Brendan EI6IZ, add outgoing IPV6 connect() handling
 29Mar11=======================================================================
 1. Add CTY-2106 prefixes
 16Mar11=======================================================================
index f2bb29768169b02b953887dcc6395a42d7b7175d..6805e008a770368b33e801c127fc721fc51187bf 100644 (file)
@@ -222,22 +222,27 @@ sub connect {
        $conn->{peerport} = $to_port;
        $conn->{sort} = 'Outgoing';
        
-    # Create a new internet socket
-    my $sock = $io_socket->new();
-    return undef unless $sock;
-       
-       my $proto = getprotobyname('tcp');
-       $sock->socket(AF_INET, SOCK_STREAM, $proto) or return undef;
-       
-       blocking($sock, 0);
-       $conn->{blocking} = 0;
+       my $sock;
+       if ($blocking_supported) {
+               $sock = $io_socket->new(PeerAddr => $to_host, PeerPort => $to_port, Proto => 'tcp', Blocking =>0);
+       } else {
+               # Create a new internet socket
+               my $sock = $io_socket->new();
+               return undef unless $sock;
 
-       # does the host resolve?
-       my $ip = gethostbyname($to_host);
-       return undef unless $ip;
-       
-       my $r = connect($sock, pack_sockaddr_in($to_port, $ip));
-       return undef unless $r || _err_will_block($!);
+               my $proto = getprotobyname('tcp');
+               $sock->socket(AF_INET, SOCK_STREAM, $proto) or return undef;
+
+               blocking($sock, 0);
+               $conn->{blocking} = 0;
+
+               # does the host resolve?
+               my $ip = gethostbyname($to_host);
+               return undef unless $ip;
+
+               my $r = connect($sock, pack_sockaddr_in($to_port, $ip));
+               return undef unless $r || _err_will_block($!);
+       }
        
        $conn->{sock} = $sock;
        $conn->{peerhost} = $sock->peerhost;    # for consistency
index e534b0146b9295355fdb548a7d69d3d32a05ac46..fa1654f255c5adb2ba837bdee6496331449875be 100644 (file)
@@ -11,7 +11,7 @@ use vars qw($version $subversion $build $gitversion);
 
 $version = '1.55';
 $subversion = '0';
-$build = '87';
-$gitversion = '8f65275';
+$build = '88';
+$gitversion = 'dd4a4bf';
 
 1;