Net::FTP, GET transfers only a part of a file



Hi all,

I'm having a mysterious problem with my script. I'm using
Net::FTP to transfer files from a remote server and only a
part of the file is transferred (2080 bytes vs. 12000 bytes).

After that I try to issue a PWD command which hangs in the
select, waiting for response which never arrives. The reason
for this is that the servers TCP window is full because GET
didn't read all available data from the FTP-DATA channel,
thus I end up in a deadlock, where my script waits for a
response and the server waits that the client would read
some data and make space into the TCP window.

Why GET reads only a part of the file? After the first
read data packet, GET returns OK and my script continues,
and eventually hangs waiting for the response of PWD.

Net::FTP version is 2.72

My perl is:

Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration:
Platform:
osname=solaris, osvers=2.8, archname=sun4-solaris-thread-multi-64
uname='sunos sol8dev 5.8 generic_108528-14 sun4u sparc sunw,sun-fire '
config_args='-Dcc=cc -Duse64bitall -Dprefix=/vobs/prod/opensource/perl/SunOS'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=define uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -xarch=v9 -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O',
cppflags='-D_REENTRANT -xarch=v9 -I/usr/local/include'
ccversion='Sun WorkShop 6 update 1 C 5.2 2000/09/11', gccversion='', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -xarch=v9 -L/usr/lib/sparcv9 -L/usr/ccs/lib/sparcv9 -L/opt/SUNWspro/WS6U1/lib/v9 -L/usr/local/lib '
libpth=/usr/lib/sparcv9 /usr/ccs/lib/sparcv9 /opt/SUNWspro/WS6U1/lib/v9 /usr/local/lib /usr/lib /usr/ccs/lib libs=-lsocket -lnsl -ldl -lm -lpthread -lc
perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
libc=/usr/lib/sparcv9/libc.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -R /vobs/prod/opensource/perl/SunOS/lib/5.8.3/sun4-solaris-thread-multi-64/CORE'
cccdlflags='-KPIC', lddlflags=' -G -xarch=v9 -L/usr/lib/sparcv9 -L/usr/ccs/lib/sparcv9 -L/opt/SUNWspro/WS6U1/lib/v9 -L/usr/local/lib'


Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_64_BIT_INT USE_64_BIT_ALL USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
Built under solaris
Compiled at Mar 30 2004 15:09:51
%ENV:
PERL5LIB="/home/cpt2jmo/testing/ftp_collector/2.0/bin:"
@INC:
/home/cpt2jmo/testing/ftp_collector/2.0/bin
/vobs/prod/opensource/perl/SunOS/lib/5.8.3/sun4-solaris-thread-multi-64
/vobs/prod/opensource/perl/SunOS/lib/5.8.3
/vobs/prod/opensource/perl/SunOS/lib/site_perl/5.8.3/sun4-solaris-thread-multi-64
/vobs/prod/opensource/perl/SunOS/lib/site_perl/5.8.3
/vobs/prod/opensource/perl/SunOS/lib/site_perl

thanks,

Jussi Mononen

--
remove -asdf and asdf- for email address

.



Relevant Pages

  • Re: middleware, sort of (same question, different posting software)
    ... >I have a server side script that takes a user's input in a form, ... and sends it on to an external server. ... So I can't get the response back in the same script ...
    (comp.lang.perl)
  • Re: CGI: want no response from server
    ... > page (the script does some background task on the server). ... But in brief the answer is Status: 204 No response ... All CGI scripts must return some kind of appropriate ...
    (comp.lang.perl.misc)
  • Re: How to set Timeout with URL Moniker?
    ... unless the script takes more than about 60 seconds to return any HTTP ... as a response. ... HTTP connection, and thus never receives the "ok" from the server. ...
    (microsoft.public.vc.language)
  • RE: Window.open javascript
    ... creation of this script occur on some event handler whose event is only ... server and send this script on a response ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: stop/restart sql service
    ... use a script to transfer files over to another server and ... restart the service automatically. ...
    (microsoft.public.scripting.vbscript)