IPv6
[email protected] (Nicholas Bamber) Sat, 23 Apr 2011 17:06:15 +0100
| Newsgroups | perl.libwww |
|---|---|
| Organization | Periapt Technologies |
| Message-ID | <[email protected]> |
Gisle, I have looked into this a bit more. The facts are as far as I can see: * The module names INET and INET6 relate directly to AF_INET and AF_INET6 constants in sys/socket.h (or at the very least a lot of code is thought to make this or related assumptions). This is why IO::Socket::INET will never support IPv6. * IO::Socket::INET6 and IO::Socket::IP were written specifically to deal with this issue. * People are actively working on getting IPv6 support at the IO::Socket::* level into perl core. It did not seem likely that it would get into perl 5.14 to me. * I think I have spotted an issue directly in the Net::HTTP code. In Net::HTTP::Methods::http_configure the $peer variable is parsed into hostname/IP address and optional port by using the ':' seperator. This of course is going to break if the hostname is an IPv6 address. On Debian (which now has a minimum perl version 5.10.1) we could probably cook a regular expression that would easily get us out of that hole. But I am not sure how widely applicable that would be. Nicholas On 13/03/11 12:27, Nicholas Bamber wrote: > Gisle > I have to apologize I have not really tried to study this code in detail > so far. I have just been trying to understand the issues and the > dependencies between the various modules. > > >> I have not followed what the current state of this is. What prevents > the > >>> core IO::Socket::INET from just working with IPv6? > > Whilst this seems the most logical cause of action, I have some evidence > that it simply will not happen. I am still trying to get to the bottom > of why this should be so, but here is a straw in the wind. The > IO::Socket::SSL module (which is optionally used by Net::HTTPS) already > uses IO::Socket::INET6 if it is available and IO::Socket::INET otherwise. > > Thus it seems to me the option which most sails with the wind is: > 1.) Modify Net::HTTP to use IO::Socket::INET6 if it is available and > IO::Socket::INET otherwise. > 2.) Work with the author of IO::Socket::INET6 to improve its portability. > > As Michiel points out there are other options, but I think the analysis > above (if it holds good) implicitly deals with that. > > As far as I can see the modules lacking a clear copyright statement are: > > File::Listing > WWW:RobotRules > Mozilla::CA > > Nicholas > > > On 11/03/11 17:18, Michiel Beijen wrote: >> Gisle, >> >> On Fri, Mar 11, 2011 at 3:06 PM, Nicholas >> Bamber<[email protected]>wrote: >> >>> >>>> >>>> Seems wrong to me to start depending on the non-core IO::Socket::INET6. >>>> Does that module even work on Windows? >>>> >>>> --Gisle >>>> >>>> >>> >>> I have not looked into this issue in detail either. Getting it fixed >>> in IO::Socket::INET seems pretty logical to me and I will make >>> enquiries in >>> that area. I cannot help thinking that someone must have tried that >>> before >>> though. >>> >> >> Please look at Paul Evans' IO::Socket::IP which can do both IPv4 and >> IPv6 in >> a transparent fashion. Ref: >> http://leonerds-code.blogspot.com/2011/01/ipv6-in-perl.html >> >> I guess you're right in stating that preferably you should want to >> depend on >> a core module. It just might be that IO::Socket::IP should become a >> part of >> core in 5.14, then. >> >> -- >> Mike >> > >