アップロード時にホストが名前を付けた場合の属性
補足です。アップロード後に属性変更で簡単に変更できるので、今の動作が仕様であってもアップロード後に手動で属性変更すれば実用上問題ないと思います。
ありがとうございます。 ただしSTOUの応答には人間が識別できる表記がされるという規定のみで、形式に規格が無いため、今回はSTOUの後の属性変更を無効にしました。 http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=0e15e2357c8940b493952ca05daf8464fbd33d91
s_kawamoto への返信
ありがとうございます。 ただしSTOUの応答には人間が識別できる表記がされるという規定のみで、形式に規格が無いため、今回はSTOUの後の属性変更を無効にしました。 http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=0e15e2357c8940b493952ca05daf8464fbd33d91
修正されていることを確認しました。RFC1123でexact formatとして応答は書かれているものの守っていないFTPサーバもざらにあるようなので、無効化してあれば良いと思います。
すみません。修正を確認した後に気づいたのですが、ホストに名前を付けさせるとステータスバーの転送待ちファイル数が増えたまま減らないようです。
ソースを確認したところ、実際に転送待ちファイルがキューに並んでいるわけではなく、TranFiles変数の値の表示だけの問題のようです。
なるほど、RFC1123ですか。見落としてすみません。 ファイル名をホストに委ねる時点でこの機能にこだわる必要は無いのでしょうが、 http://www.ietf.org/rfc/rfc1123.txt の4.1.2.9を見ると応答の「pppp」はファイル名ではなく「パス名」とだけ書いてあり、応答の例は記載されていないようですが、実際はどちらなのでしょうか。
ホストに名前を付けさせるとステータスバーの転送待ちファイル数が増えたまま減らないようです。
修正しました。 http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=1684ef33239596c06a94ec0ac52addfa93f8ae2c
s_kawamoto への返信
なるほど、RFC1123ですか。見落としてすみません。 ファイル名をホストに委ねる時点でこの機能にこだわる必要は無いのでしょうが、 http://www.ietf.org/rfc/rfc1123.txt の4.1.2.9を見ると応答の「pppp」はファイル名ではなく「パス名」とだけ書いてあり、応答の例は記載されていないようですが、実際はどちらなのでしょうか。
ProFTPD1.3.4だと「150 FILE: ftpAbcd1F」という応答で、対象ディレクトリにその名前のファイルが作られます。細かい振る舞いはFTPサーバごとに違いそうなので、現状の属性変更コマンドを送り付けないで十分かと思います。
ホストに名前を付けさせるとステータスバーの転送待ちファイル数が増えたまま減らないようです。
修正しました。
確認しました。ありがとうございます。
1.98eで実装しました。
アップロード時にファイル名の重複があって「ホストが名前を付ける」を選ぶと、属性変更は元のファイル名(重複したもの)に対して実行されるバグがあります。
RFC1123によるとSTOU /foo/barに対して、125 FILE: ppppまたは150 FILE: ppppを返すことになっているので、この正しい書式のレスポンスがあればppppに対して属性変更(たとえば SITE CHMOD 644 /foo/pppp)を行う、変なレスポンスを返すダメなFTPサーバの場合は属性変更のコマンドを送らないというという動作が望ましいと思います。