Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re^2: IPV6 Errors with IO::Socket

by jZed (Prior)
on Feb 02, 2017 at 17:10 UTC ( [id://1180862] : note . print w/replies, xml ) Need Help??

in reply to Re: IPV6 Errors with IO::Socket
in thread IPV6 Errors with IO::Socket

Thanks, my problem is that I DO have INET6 and it is misbehaving. I need to either find out how to fix it or disable use of IO::Socket::INET6 so that IO::Socket always uses IPV4.

Replies are listed 'Best First'.
Re^3: IPV6 Errors with IO::Socket
by Corion (Patriarch) on Feb 02, 2017 at 18:01 UTC

    Grepping both IO::Socket 1.31 and IO::Socket 1.36 for "INET6" yields no results for me.

    Can you show us a short program that reproduces your problem and shows that IO::Socket loads IO:;:Socket::INET6?

    #!perl -w use strict; use Data::Dumper; use IO::Socket; # whatever you need to do to make the error message/warning show up in + print Dumper \%INC;

    Of course, you can always try to rename IO/Socket/ ;)

      OK, thanks old friend, your question prompted me to look at what calls what and here's the deal: XML::Feed calls LWP::UserAgent which, in the case of https searches, calls IO::Socket::SSL which calls IO::Socket::INET6 unless it's told not to or it can't find IO::Socket::INET6 in which case it uses IO::Socket:INET which is what I apparently want. So I need to figure out how I can tell it that from up before I call XML::Feed. So I tried removing IO::Socket::INET6 from @INC in a BEGIN block, but I still get the errors ... will report back as I find out more.

        Looking at the documentation of IO::Socket::SSL, it says

        Alternatively you can enforce IPv4 globally by loading IO::Socket::SSL with the option 'inet4', in which case it will use the IPv4 only class IO::Socket::INET as the super class.

        So, maybe the following works:

        #!perl -w use strict; use IO::Socket::SSL 'inet4'; use XML::Feed;

        (I only knew to look there from having seen a presentation by noxxi on this topic)

Re^3: IPV6 Errors with IO::Socket
by Phenomanan (Monk) on Feb 02, 2017 at 19:49 UTC

    Just based on some research, I think you might be able to get around this issue by using "IO::Socket::INET" instead of "IO::Socket::INET6". Haven't tested this though, but might be worth a try.


      Yes, right, I need to force use of IO::Socket::INET. But I need to do that many levels above that software if I don't want to muck with other people's modules or other peoples' @INC. See my response to Corion above.
Re^3: IPV6 Errors with IO::Socket
by thezip (Vicar) on Feb 02, 2017 at 17:30 UTC

    Welcome back, Jeff!

    *My* tenacity goes to eleven...