Socket6

 view release on metacpan or  search on metacpan

im-140.diff  view on Meta::CPAN

--- im-140/IM/TcpTransaction.pm.orig	Mon Mar  6 19:39:35 2000
+++ im-140/IM/TcpTransaction.pm	Wed Mar  8 22:16:24 2000
@@ -15,6 +15,9 @@
 require Exporter;
 use IM::Config qw(dns_timeout connect_timeout command_timeout rcv_buf_siz);
 use Socket;
+BEGIN {
+    eval 'use Socket6' unless (eval '&AF_INET6');       # IPv6 patched Perl
+}
 use IM::Util;
 use IM::Ssh;
 use integer;
@@ -120,8 +123,8 @@
 	    $remoteport = $serv;
 	    $Cur_server = $s;
 	}
-	$0 = progname() . ": im_getaddrinfo($s)";
-	@he_infos = im_getaddrinfo($s, $remoteport, AF_UNSPEC, SOCK_STREAM);
+	$0 = progname() . ": getaddrinfo($s)";
+	@he_infos = getaddrinfo($s, $remoteport, AF_UNSPEC, SOCK_STREAM);
 	if ($#he_infos < 1) {
 	    im_warn("address unknown for $s\n");
 	    @Response = ("address unknown for $s");
@@ -147,7 +150,7 @@
 		if ($family == AF_INET) {
 		    $port = (unpack_sockaddr_in($sin))[0];
 		} else {
-		    $port = (inet6_unpack_sockaddr_in6($sin))[0];
+		    $port = (unpack_sockaddr_in6($sin))[0];
 		}
 		*SOCK = \*{$name};
 		$SOCK = $port;
@@ -364,7 +367,9 @@
     my $count = shift;
 
     pool_priv_sock_af($count, AF_INET);
-    pool_priv_sock_af($count, inet6_family()) if (eval '&AF_INET6');
+    if (eval 'pack_sockaddr_in6(110, pack("N4", 0, 0, 0, 0))') {
+	pool_priv_sock_af($count, AF_INET6);
+    }
 }
 
 sub pool_priv_sock_af ($$) {
@@ -391,7 +396,7 @@
 		$psin = pack_sockaddr_in($privport, $ANYADDR);
 	    } else {
 		$ANYADDR = pack('N4', 0, 0, 0, 0);
-		$psin = inet6_pack_sockaddr_in6($privport, $ANYADDR);
+		$psin = pack_sockaddr_in6($privport, $ANYADDR);
 	    }
 	    last if (bind (*{$TcpSockName}, $psin));
 	    im_warn("privileged socket binding failed: $!.\n")
@@ -432,68 +437,6 @@
     im_die("connection error\n");
 }
 
-sub im_getaddrinfo ($$;$$$$) {
-    return getaddrinfo(@_) if (defined &getaddrinfo);
-
-    my ($node, $serv, $family, $socktype, $proto, $flags) = @_;
-
-    my ($pe_name, $pe_aliases, $pe_proto, $se_port);
-    if (unixp()) {
-	$proto = 'tcp' unless ($proto);
-	($pe_name, $pe_aliases, $pe_proto) = getprotobyname($proto);



( run in 3.524 seconds using v1.01-cache-2.11-cpan-796a6f069b2 )