Skip Menu |

This queue is for tickets about the libnet CPAN distribution.

Report information
The Basics
Id: 100020
Status: resolved
Priority: 0/
Queue: libnet

People
Owner: Nobody in particular
Requestors: dmitry [...] nefedov.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Net::FTP warning & error
Date: Tue, 4 Nov 2014 14:48:05 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
Code string: $ftp = Net::FTP->new($ftp_host, Debug => $debug_ftp, Timeout => 300); Net::FTP v. 2.75 is working perfectly. Net::FTP v. 3.02 display 1 warning and 1 fatal error. Warning: Argument "1.79_01" isn't numeric in subroutine entry at /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. (IO::Socket::SSL v. 1.79_01) Error: IO::Socket: Cannot configure a generic socket Perl: "v5.8.8 built for i386-linux-thread-multi" System: "Red Hat Enterprise Linux Server release 5.11 (Tikanga)"
On Tue Nov 04 07:48:17 2014, dmitry@nefedov.org wrote: Show quoted text
> Code string: > $ftp = Net::FTP->new($ftp_host, Debug => $debug_ftp, Timeout => 300); > > Net::FTP v. 2.75 is working perfectly. > Net::FTP v. 3.02 display 1 warning and 1 fatal error. > > Warning: > Argument "1.79_01" isn't numeric in subroutine entry at > /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. > (IO::Socket::SSL v. 1.79_01) > > Error: > IO::Socket: Cannot configure a generic socket > > Perl: "v5.8.8 built for i386-linux-thread-multi" > System: "Red Hat Enterprise Linux Server release 5.11 (Tikanga)"
Thanks for the report. I cannot reproduce the problem myself with a recent perl (5.18.0): perl -Mblib -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Net::FTP>>> Net::FTP(3.03) Net::FTP>>> Exporter(5.68) Net::FTP>>> Net::Cmd(3.03) Net::FTP>>> IO::Socket::SSL(1.999_01) Net::FTP>>> IO::Socket::INET(1.33) Net::FTP>>> IO::Socket(1.36) Net::FTP>>> IO::Handle(1.34) Net::FTP=GLOB(0x1edb8d8)<<< 220-FileZilla Server version 0.9.43 beta Net::FTP=GLOB(0x1edb8d8)<<< 220-written by Tim Kosse (tim.kosse@filezilla-project.org) Net::FTP=GLOB(0x1edb8d8)<<< 220 Please visit http://sourceforge.net/projects/filezilla/ I wonder if the problems are restricted to some older version of perl and/or its standard libraries, in particular version.pm and IO/Socket.pm. I will resurrect an old perl 5.8.8 and see if I can reproduce the problem there. In the meantime, please could you tell me what version of version.pm and IO/Socket.pm you have? If you're able, you could also try updating those two modules to newer versions from CPAN and see if that helps.
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Tue, 11 Nov 2014 17:52:10 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
Hi, Steve! Thanks for the answer! version.pm 0.9909 (16 Aug) IO/Socket.pm 1.29 (20 Oct) Net/FTP.pm 3.02 (10 Oct) Upgrade IO/Socket.pm to 1.31 not solve the problem. Package "version" is up to date. 2014-11-11 16:00 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Tue Nov 04 07:48:17 2014, dmitry@nefedov.org wrote:
> > Code string: > > $ftp = Net::FTP->new($ftp_host, Debug => $debug_ftp, Timeout => 300); > > > > Net::FTP v. 2.75 is working perfectly. > > Net::FTP v. 3.02 display 1 warning and 1 fatal error. > > > > Warning: > > Argument "1.79_01" isn't numeric in subroutine entry at > > /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. > > (IO::Socket::SSL v. 1.79_01) > > > > Error: > > IO::Socket: Cannot configure a generic socket > > > > Perl: "v5.8.8 built for i386-linux-thread-multi" > > System: "Red Hat Enterprise Linux Server release 5.11 (Tikanga)"
> > Thanks for the report. I cannot reproduce the problem myself with a recent > perl (5.18.0): > > perl -Mblib -we "use strict; use warnings; use Net::FTP; > Net::FTP->new('localhost', Debug => 1, Timeout => 300)" > Net::FTP>>> Net::FTP(3.03) > Net::FTP>>> Exporter(5.68) > Net::FTP>>> Net::Cmd(3.03) > Net::FTP>>> IO::Socket::SSL(1.999_01) > Net::FTP>>> IO::Socket::INET(1.33) > Net::FTP>>> IO::Socket(1.36) > Net::FTP>>> IO::Handle(1.34) > Net::FTP=GLOB(0x1edb8d8)<<< 220-FileZilla Server version 0.9.43 beta > Net::FTP=GLOB(0x1edb8d8)<<< 220-written by Tim Kosse ( > tim.kosse@filezilla-project.org) > Net::FTP=GLOB(0x1edb8d8)<<< 220 Please visit > http://sourceforge.net/projects/filezilla/ > > I wonder if the problems are restricted to some older version of perl > and/or its standard libraries, in particular version.pm and IO/Socket.pm. > > I will resurrect an old perl 5.8.8 and see if I can reproduce the problem > there. In the meantime, please could you tell me what version of > version.pm and IO/Socket.pm you have? > > If you're able, you could also try updating those two modules to newer > versions from CPAN and see if that helps. >
On Tue Nov 11 13:47:03 2014, dmitry@nefedov.org wrote: Show quoted text
> Hi, Steve! > Thanks for the answer! > > version.pm 0.9909 (16 Aug) > IO/Socket.pm 1.29 (20 Oct) > Net/FTP.pm 3.02 (10 Oct) > > Upgrade IO/Socket.pm to 1.31 not solve the problem. > Package "version" is up to date. >
Thanks for testing. I managed to reproduce the "Argument isn't numeric" warning using perl-5.8.8. Presumably it is the result of the core code (rather than code in version.pm) in older versions of Perl. I have now fixed that in the GitHub repository: https://github.com/steve-m-hay/perl-libnet/commit/c2fe21c50ceb473ceb80f1343948d9a172aec59d However, I still cannot reprodce the IO::Socket error. Do you get the problem with the one-liner that I posted earlier which I said I could not reproduce the problem with? Or is it only with a longer script that you see the error. If it's the latter case then it would be helpful to see a complete program that is exhibiting the problem.
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Fri, 14 Nov 2014 10:04:44 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
I added your changes to FTP.pm - the warning doesn't appear any more. But it didn't resolve the main issue, unfortunately. Test scripts: 1. Code: #!/usr/bin/perl use IO::Socket::INET; my $sock = IO::Socket::INET->new(PeerHost => 'localhost', PeerPort => 21, Proto => 'tcp'); print $sock."\n"; exit(0); 1. Result: IO::Socket::INET=GLOB(0x928cc38) 2. Code: #!/usr/bin/perl use Net::FTP; my $ftp = Net::FTP->new('localhost'); print $ftp."\n"; exit(0); 2. Result: IO::Socket: Cannot configure a generic socket at ./testFTP.pl line 5 2014-11-13 20:26 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Tue Nov 11 13:47:03 2014, dmitry@nefedov.org wrote:
> > Hi, Steve! > > Thanks for the answer! > > > > version.pm 0.9909 (16 Aug) > > IO/Socket.pm 1.29 (20 Oct) > > Net/FTP.pm 3.02 (10 Oct) > > > > Upgrade IO/Socket.pm to 1.31 not solve the problem. > > Package "version" is up to date. > >
> > Thanks for testing. I managed to reproduce the "Argument isn't numeric" > warning using perl-5.8.8. Presumably it is the result of the core code > (rather than code in version.pm) in older versions of Perl. I have now > fixed that in the GitHub repository: > > > https://github.com/steve-m-hay/perl-libnet/commit/c2fe21c50ceb473ceb80f1343948d9a172aec59d > > However, I still cannot reprodce the IO::Socket error. Do you get the > problem with the one-liner that I posted earlier which I said I could not > reproduce the problem with? Or is it only with a longer script that you see > the error. If it's the latter case then it would be helpful to see a > complete program that is exhibiting the problem. >
On Fri Nov 14 03:04:55 2014, dmitry@nefedov.org wrote: Show quoted text
> I added your changes to FTP.pm - the warning doesn't appear any more. > But it didn't resolve the main issue, unfortunately. > > > Test scripts: > > 1. Code: > #!/usr/bin/perl > > use IO::Socket::INET; > > my $sock = IO::Socket::INET->new(PeerHost => 'localhost', PeerPort => > 21, > Proto => 'tcp'); > print $sock."\n"; > exit(0); > > 1. Result: > IO::Socket::INET=GLOB(0x928cc38) > > > 2. Code: > #!/usr/bin/perl > > use Net::FTP; > > my $ftp = Net::FTP->new('localhost'); > print $ftp."\n"; > exit(0); > > 2. Result: > IO::Socket: Cannot configure a generic socket at ./testFTP.pl line 5 >
I'm afraid I still can't reproduce this, even using perl-5.8.8. My output is: IO::Socket::INET=GLOB(0x2ebbda0) Net::FTP=GLOB(0x2ebbe54) What happens if you change the arguments to your IO::Socket::INET test to match those that Net::FTP uses?: my $sock = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => 'ftp(21)', LocalAddr => undef, Proto => 'tcp', Timeout => 120, SSL_startHandshake => 0); This (obviously) works fine for me. Do you get the IO/Socket.pm with this like you do with Net::FTP, or does this work?
On Mon Nov 17 03:42:45 2014, SHAY wrote: Show quoted text
> On Fri Nov 14 03:04:55 2014, dmitry@nefedov.org wrote:
> > I added your changes to FTP.pm - the warning doesn't appear any more. > > But it didn't resolve the main issue, unfortunately. > > > > > > Test scripts: > > > > 1. Code: > > #!/usr/bin/perl > > > > use IO::Socket::INET; > > > > my $sock = IO::Socket::INET->new(PeerHost => 'localhost', PeerPort => > > 21, > > Proto => 'tcp'); > > print $sock."\n"; > > exit(0); > > > > 1. Result: > > IO::Socket::INET=GLOB(0x928cc38) > > > > > > 2. Code: > > #!/usr/bin/perl > > > > use Net::FTP; > > > > my $ftp = Net::FTP->new('localhost'); > > print $ftp."\n"; > > exit(0); > > > > 2. Result: > > IO::Socket: Cannot configure a generic socket at ./testFTP.pl line 5 > >
> > I'm afraid I still can't reproduce this, even using perl-5.8.8. My > output is: > > IO::Socket::INET=GLOB(0x2ebbda0) > > Net::FTP=GLOB(0x2ebbe54) > > What happens if you change the arguments to your IO::Socket::INET test > to match those that Net::FTP uses?: > > my $sock = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => > 'ftp(21)', LocalAddr => undef, Proto => 'tcp', Timeout => 120, > SSL_startHandshake => 0); > > This (obviously) works fine for me. Do you get the IO/Socket.pm with > this like you do with Net::FTP, or does this work?
Another thing that would help in getting to the bottom of this is to determine in exactly which version of Net/FTP.pm the problem started happening. You mentioned that it worked in 2.75 (which shipped in libnet-1.19) but not in 3.02 (in libnet-3.02). Which intermediate versions work/don't work? Specifically, in which version did the problem first appear?
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Mon, 17 Nov 2014 11:32:39 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
Test sctipt: #!/usr/bin/perl use Net::FTP; my $sock = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => 'ftp(21)', LocalAddr => undef, Proto => 'tcp', Timeout => 120, SSL_startHandshake => 0); print $sock."\n"; exit(0); Result: IO::Socket::INET=GLOB(0x8484a50) I have some servers. I noticed that backup (Perl-script) doesn't work for some of them. Systems are updated automatically therefore I have no more exact data on versions, unfortunately. 2014-11-17 10:57 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Mon Nov 17 03:42:45 2014, SHAY wrote:
> > On Fri Nov 14 03:04:55 2014, dmitry@nefedov.org wrote:
> > > I added your changes to FTP.pm - the warning doesn't appear any more. > > > But it didn't resolve the main issue, unfortunately. > > > > > > > > > Test scripts: > > > > > > 1. Code: > > > #!/usr/bin/perl > > > > > > use IO::Socket::INET; > > > > > > my $sock = IO::Socket::INET->new(PeerHost => 'localhost', PeerPort => > > > 21, > > > Proto => 'tcp'); > > > print $sock."\n"; > > > exit(0); > > > > > > 1. Result: > > > IO::Socket::INET=GLOB(0x928cc38) > > > > > > > > > 2. Code: > > > #!/usr/bin/perl > > > > > > use Net::FTP; > > > > > > my $ftp = Net::FTP->new('localhost'); > > > print $ftp."\n"; > > > exit(0); > > > > > > 2. Result: > > > IO::Socket: Cannot configure a generic socket at ./testFTP.pl line 5 > > >
> > > > I'm afraid I still can't reproduce this, even using perl-5.8.8. My > > output is: > > > > IO::Socket::INET=GLOB(0x2ebbda0) > > > > Net::FTP=GLOB(0x2ebbe54) > > > > What happens if you change the arguments to your IO::Socket::INET test > > to match those that Net::FTP uses?: > > > > my $sock = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => > > 'ftp(21)', LocalAddr => undef, Proto => 'tcp', Timeout => 120, > > SSL_startHandshake => 0); > > > > This (obviously) works fine for me. Do you get the IO/Socket.pm with > > this like you do with Net::FTP, or does this work?
> > > Another thing that would help in getting to the bottom of this is to > determine in exactly which version of Net/FTP.pm the problem started > happening. > > You mentioned that it worked in 2.75 (which shipped in libnet-1.19) but > not in 3.02 (in libnet-3.02). Which intermediate versions work/don't work? > Specifically, in which version did the problem first appear? >
On Mon Nov 17 04:32:50 2014, dmitry@nefedov.org wrote: Show quoted text
> Test sctipt: > > #!/usr/bin/perl > > use Net::FTP; > > my $sock = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => > 'ftp(21)', LocalAddr => undef, Proto => 'tcp', Timeout => 120, > SSL_startHandshake => 0); > print $sock."\n"; > exit(0); > > Result: > > IO::Socket::INET=GLOB(0x8484a50)
It's very odd that that works, because the arguments in that IO::Socket::INET->new() call are exactly the same as Net::FTP->new('localhost') will do. Did you try the above test on the machine on which Net::FTP->new('localhost') fails? Please can you confirm what $Net::FTP::VERSION is on that machine? Show quoted text
> > > > I have some servers. I noticed that backup (Perl-script) doesn't work for > some of them. Systems are updated automatically therefore I have no more > exact data on versions, unfortunately. >
Is it possible to upgrade the libnet installation on the machine that currently has Net::FTP 2.75 on it? If so then you could upgrade it one version at a time (i.e. uprade to libnet-1.20, then 1.21, etc -- all the way up to 3.02 if necessary (that isn't as many versions as it sounds!)) and find out where it stops working. (Obviously, make a safe copy of the lib\Net folder first so that you can rewind to a working version after finding the one that breaks; or else just reinstall libnet 1.19 to get back to where you started).
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Mon, 17 Nov 2014 17:47:36 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
1. System, which works with 2.75 ("normal") Im trying to use new FTP.pm and Cmd.pm from 3.02 - it works: perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Argument "1.79_01" isn't numeric in subroutine entry at /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. Net::FTP>>> Net::FTP(3.02) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(3.02) Net::FTP>>> IO::Socket::INET6(2.69) Net::FTP>>> IO::Socket(1.29) Net::FTP>>> IO::Handle(1.25) Net::FTP=GLOB(0x9fa6770)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 2. System, which works with 2.75 ("normal") Original FTP.pm v 2.75: perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Net::FTP>>> Net::FTP(2.75) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(2.26) Net::FTP>>> IO::Socket::INET(1.29) Net::FTP>>> IO::Socket(1.29) Net::FTP>>> IO::Handle(1.25) Net::FTP=GLOB(0x91e1180)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 3. System, which works with 3.02 ("where problem"): Im trying to use old FTP.pm 2.75 from libnet 1.19 - it works: perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Net::FTP>>> Net::FTP(2.75) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(3.02) Net::FTP>>> IO::Socket::INET(1.29) Net::FTP>>> IO::Socket(1.29) Net::FTP>>> IO::Handle(1.25) Net::FTP=GLOB(0x912edc8)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 4. System, which works with 3.02 ("where problem"): Original FTP.pm v 3.02: perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" IO::Socket: Cannot configure a generic socket at -e line 1 5. System, which works with 3.02 ("where problem"): Im trying to use old FTP.pm and CMD.pm from other versions libnet. Newest working version - 1.27 (1.28-3.02 is not working): perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Net::FTP>>> Net::FTP(2.79) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(2.30) Net::FTP>>> IO::Socket::INET(1.31) Net::FTP>>> IO::Socket(1.31) Net::FTP>>> IO::Handle(1.28) Net::FTP=GLOB(0x9c6d990)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 2014-11-17 15:16 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Mon Nov 17 04:32:50 2014, dmitry@nefedov.org wrote:
> > Test sctipt: > > > > #!/usr/bin/perl > > > > use Net::FTP; > > > > my $sock = IO::Socket::INET->new(PeerAddr => 'localhost', PeerPort => > > 'ftp(21)', LocalAddr => undef, Proto => 'tcp', Timeout => 120, > > SSL_startHandshake => 0); > > print $sock."\n"; > > exit(0); > > > > Result: > > > > IO::Socket::INET=GLOB(0x8484a50)
> > > It's very odd that that works, because the arguments in that > IO::Socket::INET->new() call are exactly the same as > Net::FTP->new('localhost') will do. > > Did you try the above test on the machine on which > Net::FTP->new('localhost') fails? Please can you confirm what > $Net::FTP::VERSION is on that machine? > >
> > > > > > > > I have some servers. I noticed that backup (Perl-script) doesn't work for > > some of them. Systems are updated automatically therefore I have no more > > exact data on versions, unfortunately. > >
> > Is it possible to upgrade the libnet installation on the machine that > currently has Net::FTP 2.75 on it? If so then you could upgrade it one > version at a time (i.e. uprade to libnet-1.20, then 1.21, etc -- all the > way up to 3.02 if necessary (that isn't as many versions as it sounds!)) > and find out where it stops working. (Obviously, make a safe copy of the > lib\Net folder first so that you can rewind to a working version after > finding the one that breaks; or else just reinstall libnet 1.19 to get back > to where you started). >
On Mon Nov 17 10:47:47 2014, dmitry@nefedov.org wrote: Show quoted text
> 1. System, which works with 2.75 ("normal") > Im trying to use new FTP.pm and Cmd.pm from 3.02 - it works: > Net::FTP>>> IO::Socket::INET6(2.69) > > 2. System, which works with 2.75 ("normal") > Original FTP.pm v 2.75: > Net::FTP>>> IO::Socket::INET(1.29) > > 3. System, which works with 3.02 ("where problem"): > Im trying to use old FTP.pm 2.75 from libnet 1.19 - it works: > Net::FTP>>> IO::Socket::INET(1.29) > > 4. System, which works with 3.02 ("where problem"): > Original FTP.pm v 3.02: > IO::Socket: Cannot configure a generic socket at -e line 1 > > 5. System, which works with 3.02 ("where problem"): > Im trying to use old FTP.pm and CMD.pm from other versions libnet. > Newest working version - 1.27 (1.28-3.02 is not working): > Net::FTP>>> IO::Socket::INET(1.31)
Thank you for finding the version that caused the breakage. Version 1.28 introduced IPv6 support into Net::FTP, by making use of either IO::Socket::IP or IO::Socket::INET6 if available (instead of IO::Socket::INET). I see from the above snippets of your output that the working system does indeed load up IO::Socket::INET6, version 2.69, when using libnet-3.02. Unfortunately, the system where the problem is doesn't show which version of IO::Socket::INET6 (or possibly IO::Socket::IP) it is loading when using libnet-3.02. Please could you find out what version of IO::Socket::INET6 and IO::Socket::IP (if any) is on the system where the problem is. If it is an older version than 2.69 (the version that the working system is using) then please also try upgrading to version 2.69 to see if that helps.
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Wed, 19 Nov 2014 15:43:42 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
It is hot... On all "broken" systems IO::Socket::IP v.0.32 is present. On all "normal" - not. Without IP.pm on "broken" systems - FTP works! perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Argument "1.79_01" isn't numeric in subroutine entry at /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. Net::FTP>>> Net::FTP(3.02) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(3.02) Net::FTP>>> IO::Socket::INET6(2.69) Net::FTP>>> IO::Socket(1.31) Net::FTP>>> IO::Handle(1.28) Net::FTP=GLOB(0x872c8ec)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 2014-11-19 10:57 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Mon Nov 17 10:47:47 2014, dmitry@nefedov.org wrote:
> > 1. System, which works with 2.75 ("normal") > > Im trying to use new FTP.pm and Cmd.pm from 3.02 - it works: > > Net::FTP>>> IO::Socket::INET6(2.69) > > > > 2. System, which works with 2.75 ("normal") > > Original FTP.pm v 2.75: > > Net::FTP>>> IO::Socket::INET(1.29) > > > > 3. System, which works with 3.02 ("where problem"): > > Im trying to use old FTP.pm 2.75 from libnet 1.19 - it works: > > Net::FTP>>> IO::Socket::INET(1.29) > > > > 4. System, which works with 3.02 ("where problem"): > > Original FTP.pm v 3.02: > > IO::Socket: Cannot configure a generic socket at -e line 1 > > > > 5. System, which works with 3.02 ("where problem"): > > Im trying to use old FTP.pm and CMD.pm from other versions libnet. > > Newest working version - 1.27 (1.28-3.02 is not working): > > Net::FTP>>> IO::Socket::INET(1.31)
> > Thank you for finding the version that caused the breakage. Version 1.28 > introduced IPv6 support into Net::FTP, by making use of either > IO::Socket::IP or IO::Socket::INET6 if available (instead of > IO::Socket::INET). > > I see from the above snippets of your output that the working system does > indeed load up IO::Socket::INET6, version 2.69, when using libnet-3.02. > > Unfortunately, the system where the problem is doesn't show which version > of IO::Socket::INET6 (or possibly IO::Socket::IP) it is loading when using > libnet-3.02. > > Please could you find out what version of IO::Socket::INET6 and > IO::Socket::IP (if any) is on the system where the problem is. If it is an > older version than 2.69 (the version that the working system is using) then > please also try upgrading to version 2.69 to see if that helps. >
On Wed Nov 19 08:43:52 2014, dmitry@nefedov.org wrote: Show quoted text
> It is hot... > > On all "broken" systems IO::Socket::IP v.0.32 is present. > On all "normal" - not. > Without IP.pm on "broken" systems - FTP works! >
That's great to hear :-) Pelase could you try upgrading IO::Socket::IP on a "broken" system to the latest *development* release, version 0.32_001. The Changes file for that release mentions a bug fix that might be relevant to the problem that you have been experiencing: "Use SOL_SOCKET/SO_ERROR sockopt rather than 2nd connect() error hoisting to detect nonblocking connect/failure when implementing Timeout".
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Wed, 19 Nov 2014 18:12:45 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
Where I can take development 0.32_001? On CPAN is only 0.32 (that now is installed). http://cpansearch.perl.org/src/PEVANS/IO-Socket-IP-0.32/lib/IO/Socket/IP.pm 2014-11-19 16:00 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Wed Nov 19 08:43:52 2014, dmitry@nefedov.org wrote:
> > It is hot... > > > > On all "broken" systems IO::Socket::IP v.0.32 is present. > > On all "normal" - not. > > Without IP.pm on "broken" systems - FTP works! > >
> > That's great to hear :-) > > Pelase could you try upgrading IO::Socket::IP on a "broken" system to the > latest *development* release, version 0.32_001. > > The Changes file for that release mentions a bug fix that might be > relevant to the problem that you have been experiencing: "Use > SOL_SOCKET/SO_ERROR sockopt rather than 2nd connect() error hoisting to > detect nonblocking connect/failure when implementing Timeout". >
On Wed Nov 19 11:12:56 2014, dmitry@nefedov.org wrote: Show quoted text
> Where I can take development 0.32_001? On CPAN is only 0.32 (that now is > installed).
http://search.cpan.org/~pevans/IO-Socket-IP-0.32_001/
On Wed Nov 19 12:45:06 2014, SHAY wrote: Show quoted text
> On Wed Nov 19 11:12:56 2014, dmitry@nefedov.org wrote:
> > Where I can take development 0.32_001? On CPAN is only 0.32 (that now is > > installed).
> > http://search.cpan.org/~pevans/IO-Socket-IP-0.32_001/
You could also try testing IO::Socket::IP itself, rather than via Net::FTP. If the following test script fails then it will cause Net::FTP to fail (since Net::FTP will use IO::Socket::IP if available, in preference to IO::Socket::INET6 or IO::Socket::INET): #!/usr/bin/perl use IO::Socket::IP; my $sock = IO::Socket::IP->new(PeerHost => 'localhost', PeerPort => 21, Proto => 'tcp'); print $sock."\n"; exit(0); I think that will fail on the machine that has IO::Socket::IP on it. It works fine for me, though (with IO-Socket-IP-0.32) so if that fails for you then it should really be reported on the IO-Socket-IP CPAN RT queue.
Subject: Re: [rt.cpan.org #100020] Net::FTP warning & error
Date: Thu, 20 Nov 2014 10:26:54 +0200
To: bug-libnet [...] rt.cpan.org
From: Дмитрий Нефёдов <dmitry [...] nefedov.org>
The problem was unexpectedly solved by updating of the Socket module: http://cpan.uchicago.edu/pub/CPAN/authors/id/P/PE/PEVANS/Socket-2.016.tar.gz Now it works: perl -we "use strict; use warnings; use Net::FTP; Net::FTP->new('localhost', Debug => 1, Timeout => 300)" Argument "1.79_01" isn't numeric in subroutine entry at /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. Net::FTP>>> Net::FTP(3.02) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(3.02) Net::FTP>>> IO::Socket::IP(0.32) Net::FTP>>> IO::Socket(1.29) Net::FTP>>> IO::Handle(1.25) Net::FTP=GLOB(0xa06c478)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- Updating IO::Socket::IP wasn't required. Many thanks for your work! 2014-11-19 20:01 GMT+02:00 Steve Hay via RT <bug-libnet@rt.cpan.org>: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=100020 > > > On Wed Nov 19 12:45:06 2014, SHAY wrote:
> > On Wed Nov 19 11:12:56 2014, dmitry@nefedov.org wrote:
> > > Where I can take development 0.32_001? On CPAN is only 0.32 (that now
> is > > You could also try testing IO::Socket::IP itself, rather than via Net::FTP. > > If the following test script fails then it will cause Net::FTP to fail > (since Net::FTP will use IO::Socket::IP if available, in preference to > IO::Socket::INET6 or IO::Socket::INET): > > #!/usr/bin/perl > use IO::Socket::IP; > my $sock = IO::Socket::IP->new(PeerHost => 'localhost', PeerPort => 21, > Proto => 'tcp'); > print $sock."\n"; > exit(0); > > I think that will fail on the machine that has IO::Socket::IP on it. It > works fine for me, though (with IO-Socket-IP-0.32) so if that fails for you > then it should really be reported on the IO-Socket-IP CPAN RT queue. >
On Thu Nov 20 03:27:05 2014, dmitry@nefedov.org wrote: Show quoted text
> The problem was unexpectedly solved by updating of the Socket module: > http://cpan.uchicago.edu/pub/CPAN/authors/id/P/PE/PEVANS/Socket- > 2.016.tar.gz > > Now it works: > > perl -we "use strict; use warnings; use Net::FTP; > Net::FTP->new('localhost', Debug => 1, Timeout => 300)" > Argument "1.79_01" isn't numeric in subroutine entry at > /usr/lib/perl5/5.8.8/Net/FTP.pm line 35. > Net::FTP>>> Net::FTP(3.02) > Net::FTP>>> Exporter(5.58) > Net::FTP>>> Net::Cmd(3.02) > Net::FTP>>> IO::Socket::IP(0.32) > Net::FTP>>> IO::Socket(1.29) > Net::FTP>>> IO::Handle(1.25) > Net::FTP=GLOB(0xa06c478)<<< 220---------- Welcome to Pure-FTPd > [privsep] [TLS] ---------- > > Updating IO::Socket::IP wasn't required. > > Many thanks for your work! >
No problem. Thank you too for finding the final cause of the problem. I've just pushed a change to increase the minimum required version of Socket to 2.016 to save others from being bitten by the same problem: https://github.com/steve-m-hay/perl-libnet/commit/2a65863a5cc0c42497e8da41e6d77fb770891057