2010-02-06 19 views
10

El siguiente código ...¿Cómo habilito la compatibilidad con IPv6 en LWP?

my $user_agent = LWP::UserAgent->new; 
my $request = HTTP::Request->new(GET => $url); 
my $response = $user_agent->request($request); 
if ($response->is_success) { 
    print "OK\n"; 
} else { 
    die($response->status_line); 
} 

.. .. fallará con

500 Can't connect to <hostname> (Bad hostname '<hostname>') 

.. si el nombre de host en $ url es una única dirección IPv6 (es decir: presencia de un AAAA registro, pero no registro A).

Mis preguntas son:

  • Cómo puedo habilitar el soporte IPv6 en LWP?
  • ¿Cómo se configuran los ajustes de LWP para "preferir IPv4-IPv6-over-" (vs. AAAAA)/"prefieren IPv6 sobre IPv4" (vs. AAAAA)?
+1

¿Mencionó su sistema operativo? No pude encontrarlo. No estoy 100% seguro, pero podría ser relevante. – ziya

+0

Estoy ejecutando Linux. – knorv

Respuesta

11

Parece que solo necesita usar Net::INET6Glue::INET_is_INET6. Para citar su ejemplo:

use Net::INET6Glue::INET_is_INET6; 
use LWP::Simple; 
print get('http://[::1]:80'); 
print get('http://ipv6.google.com'); 
+0

¡Gracias! Net :: ¡INET6Glue hizo el truco! – knorv

1

Debian Wheezy (Perl 5.14) nice

trabajo:

use LWP::Simple; 
print get('http://ip6-localhost:80'); 

No funciona (1)

use LWP::Simple; 
print get('http://[::1]:80'); 

No de trabajo (2) [Volver: Mala nombre de host]

use LWP::Simple; 
$ua = new LWP::UserAgent(); 
my $req = new HTTP::Request("GET", "http://[::1]/"); 
my $res = $ua->request($req); 

no trabajar (3) [Volver: Connection refused]

use Net::INET6Glue::INET_is_INET6; 
use LWP::Simple; 
$ua = new LWP::UserAgent(); 
my $req = new HTTP::Request("GET", "http://[::1]/"); 
my $res = $ua->request($req); 

Soo, si no es necesario Dirección IPv6 en solicitud HTTP, está bien. :(

Cuestiones relacionadas