[#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:39565] Re: [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる

From: Shugo Maeda <shugo@...>
Date: 2009-10-28 02:09:34 UTC
List: ruby-dev #39565
前田です。

2009年10月28日0:48 Yui NARUSE <redmine@ruby-lang.org>:
>>(1) connect前にftp.binary = trueとしたことを覚えておいて、ftp.connect時にTYPEコマンドを
>>    発行するようにする。
>
> こちらだったら以下のような感じですかね。

よく考えたらlogin後でないとTYPEコマンドを発行できないですね。
また、現状では、Net::FTP#loginでbinary = trueにしているので、login前に
値を設定しても意味がありません。

このあたりは1.8と挙動が違うのですが、意図としてはデフォルトをbinary mode
にしたいということです。
1.9でNet::FTP#binary=がTYPEコマンドを発行するようになったのは、
getbinaryfileなどの呼び出しのたびにTYPEコマンドが発行されるのを
避けるためです。
この影響で、binary=の設定がlogin後でないとできなくなったので、loginメソッド
の中でself.binary = trueとするように修正されました。
# そもそも元のNet::FTP#binary=自体が自分が書いたコードじゃない気がするので
# 経緯をはっきり覚えてないんですが。

(1)の方針で行くなら、FTPサーバ上のモードを表すインスタンス変数を行しく
導入する必要がある気がします。

とりあえず、r25518のbinary=の方の修正はいったんrevertしておきます。

-- 
Shugo Maeda

In This Thread