[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00767] Re: FDclone 3.0 beta test has been started
- Subject: [FDclone-users:00767] Re: FDclone 3.0 beta test has been started
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Wed, 09 Apr 2008 23:09:31 +0900
しらいです。
In Message-Id <20080119210600.418FC40C4FD@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> しらいです。
> 特に非 UNIX 環境のサーバは事例が少ないので検証出来ていませ
> ん。proxy も色々マイナーな製品があるようなのですが動いている
> のを見つけないと確認出来ませんし。
Mac OS X で compile 出来るようにしたついでに、Mac OS X の
ftpd に対応させたので FD-sh-080409.tar.gz を置いておきました。
Leopard の ftpd は tnftpd という代物のようですが、こいつは
LIST や NLST の発行時に option 指定を許さない仕様になってい
るようです。
伝統的な ftp client の作法に「LIST -la filename」といった
書式があるんですが、tnftpd はこれを「ls '-la filename'」と解
釈して /bin/ls を起動してしまいます。
情報が欲しいのは「filename」であって「-la filename」なんて
変な代物ではないので、普通はここで /bin/ls がENOENT でエラー
終了してしまいます。
そもそも「-la」なんて option は RFC959 でも許されていない
ので、option をつける方が悪いんですが、世の中の ftpd の実装
の中にはそれがないと filename しか返さないのもいるんです。
LIST に option を許さない ftpd は大概はエラーを返すので、
「-la」付でエラーになったら「-la」無しで再試行というのがこれ
までの実装でした。
しかし、tnftpd は構文エラーにもしないし、/bin/ls が ENOENT
でエラー終了しても普通に正常応答して来るんですね。なので再試
行されずに LIST の結果が常に空になっていました。
仕方ないので LIST の結果が空だっただった場合も「-la」無し
で再試行して、そっちの結果が空でなければ「-la」無しの方を採
用するという実装にしました。
「-la」付で空だった場合でも、本当にその directory が空だっ
てことがたまにあるんですよ。「.」も「..」も無いようなおかし
な奴がね。何だったか今は思い出せないんですが。
tnftpd の場合、このケースと ENOENT とが client 側からは全
く区別つかないので、両方試して比較するしかないんですね。
ともあれ、Leopard の ftpd にも対応したので確認してみて下さ
い。
尚、隠し要素として、FTPOPTIONS の値に 32 を足した数値を用
いると最初から「-la」付は使わなくなります。あと、64 を足した
数値を用いると LIST じゃなくて NLST を使います。
うまくいかない FTP server がいる時に debug 用としてお試し
下さい。
P.S.
今週中には FD-2.09i を release しようと思ってるので、各種
検証結果の報告を持ってる人はお早めに。
しらい たかし