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

From: Shugo Maeda <shugo@...>
Date: 2009-10-27 15:19:44 UTC
List: ruby-dev #39558
前田です。

2009年10月27日23:55 Shugo Maeda <redmine@ruby-lang.org>:
> この修正で問題ないとしたら、ちょっとAPIが変だと思うので、もうちょっと考えさせてください。

やっぱりこの修正だと、ftp.connect前にftp.binary = trueとすると、その後にloginやgetbinaryfile
などでbinary modeにセットしようとしてもTYPEコマンドが発行されなくなってしまうようです。
# Net::FTP#binary=は、新しいモードが現在と同じだとTYPEコマンドを発行しないため。

(1) connect前にftp.binary = trueとしたことを覚えておいて、ftp.connect時にTYPEコマンドを
    発行するようにする。
(2) connect前にftp.binary=実行した場合は、潔く(?)例外を挙げる。

といった対応が考えられますが、特にconnect前にNet::FTP#binary=を使いたい理由があるでしょうか。
なければ(2)の方がシンプルなので、(2)にしたいのですが。

-- 
Shugo Maeda

In This Thread