[#39548] [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる — Akira Matsuda <redmine@...>

Bug #2291: Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる

10 messages 2009/10/27

[#39592] infinite recursive call to C function — Yusuke ENDOH <mame@...>

遠藤です。

17 messages 2009/10/30
[#39596] Re: infinite recursive call to C function — Yukihiro Matsumoto <matz@...> 2009/10/30

まつもと ゆきひろです

[#39599] Re: infinite recursive call to C function — Nobuyoshi Nakada <nobu@...> 2009/11/02

なかだです。

[#39601] Re: infinite recursive call to C function — Yukihiro Matsumoto <matz@...> 2009/11/02

まつもと ゆきひろです

[ruby-dev:39559] [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる

From: Yui NARUSE <redmine@...>
Date: 2009-10-27 15:48:44 UTC
List: ruby-dev #39559
チケット #2291 が更新されました。 (by Yui NARUSE)


あぁ、仰るとおりです。

>(1) connect前にftp.binary = trueとしたことを覚えておいて、ftp.connect時にTYPEコマンドを
>    発行するようにする。

こちらだったら以下のような感じですかね。

diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb
index 239bd3c..351e624 100644
--- a/lib/net/ftp.rb
+++ b/lib/net/ftp.rb
@@ -128,7 +128,7 @@ module Net
     #
     def initialize(host = nil, user = nil, passwd = nil, acct = nil)
       super()
-      @binary = false
+      @binary = nil
       @passive = false
       @debug_mode = false
       @resume = false
@@ -194,6 +194,7 @@ module Net
        @sock = open_socket(host, port)
        voidresp
       end
+      @binary ? voidcmd("TYPE I") : voidcmd("TYPE A") unless @binary.nil?
     end

     #
----------------------------------------
http://redmine.ruby-lang.org/issues/show/2291

----------------------------------------
http://redmine.ruby-lang.org

In This Thread