On Tue, May 3, 2011 at 11:25 AM, Fengfeng Li <lifengfeng / huawei.com> wrote:
> Hi everyone,
>
> I'm using ruby 1.8.7 p334 on windows.
>
> My code below is really simple, but there's something wrong if the ftp
> lasts for a long time:
>
> #code begin
> require 'net/ftp'
> require 'time'
>
> ftp =3D Net::FTP.new("189.41.6.136")
> ftp.login("mlog_123_usr", "MLog_123_pwd")
> puts Time.now()
> puts ftp.list
> ftp.putbinaryfile("D:\\version\\XXX.cc") =A0# here
> puts Time.now()
> ftp.close
> #code end
>
> My destination host is very slow, so uploading a file(about 5M) can take
> about 15 minutes, then ruby.exe cann't exit forever(I see from the host
> to make sure the file has been uploaded and there's no existing
> ftp-users)!
>
> If the uploading can be finished in a few seconds, everything is OK.
>
> I've tried both the 1.8.6&1.8.7 version, they behaved the same way.
>
> I traced the raw codes in ftp.rb, and found it was stopped when
> @sock.readline.
>
> #ruby code
> =A0 =A0def getline
> =A0 =A0 =A0line =3D @sock.readline # if get EOF, raise EOFError
> =A0 =A0 =A0line.sub!(/(\r\n|\n|\r)\z/n, "")
> =A0 =A0 =A0if @debug_mode
> =A0print "get: ", sanitize(line), "\n"
> =A0 =A0 =A0end
> =A0 =A0 =A0return line
> =A0 =A0end
> =A0 =A0private :getline
> #ruby code
>
> Is it because of my host not giving ruby.exe correct response, or
> because of ruby itself?

I would assume it to be unlikely that it is a bug in Ruby's FTP
library.  Rather I would assume that you either have network trouble -
or do not wait long enough.  Did you try to debug the network with a
network monitor (e.g. Wireshark)?

Cheers

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/