[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00918] Re: URLDRIVE で HTTP を HTTPS にリダイレクトされると変に



 しらいです。

In Message-Id <20100904160857.9b019221.riki1017kazu@gmail.com>
        Rikito INAKAZU <riki1017kazu@gmail.com>さんwrites:
> 稲員です。

> 今回報告したかったのは無限にリクエストし続けてしまう問題です。
> 
> 元メールが色々端折りすぎてて分かりにくいですね。済みませんでした。

 私の方も、週末に体調を崩して寝込んでましたので、中途半端な
対応になってしまっていました。改めて仕切り直しがてらまとめて
みます。
 その是非はともかくとして、今回表面化している現象は下記の二
点だと思います。
	1.URLDRIVE=1 の時引数の URL が展開される。
	2.展開された URL の redirect に失敗して無限ループ。

 1. に関しては、仕様なのかそうでないのかが論点となりそうな
ので後述します。後で改めて考察させて下さい。
 2. に関しては、引数に用いた場合のみならず全ての HTTP アク
セスで再現しますので、修正が必要です。LOG_DIR 時の directory
名として URL を指定しても再現性を確認出来ます。
 この用法は man page に載っていることから仕様であることが明
確なので、症状の確認にはこちらを方法を使って貰えたらと思いま
す。

 で、稲員さんが先に示された patch では、Location: の引数に
scheme 無しで local path が記述された場合にアクセスに失敗し
てしまいます。
 改めて RFC2616 を読み返してみると、そういう場合は
	Location: http:/path/to/local/file
のように書けとありますが、実際
	Location: /path/to/local/file
という記述を見かけたことがあるので対応した方が良いかも。
 あーそれ以前に、現状では前者の書式に対応してない様子ですね。
これはこれでまた考えておきます。


> URLDRIVE 機能は普段使っていないこともあって十分理解しているとは
> 言い難いのですが、上記の仕様だと今迄手元で URL 指定のコマンドが
> 問題無く動いていたのが不思議です。ここ一ヶ月余りは URLDRIVE=1 の
> 状態だったはずなんですが。

 で、1. の話に戻ります。今回の不具合から DOSDRIVE の例から
類推して、同様の仕様が URLDRIVE にも用意されていたように思い
込んでしまいましたが、そんなことはありませんでした。
 source 上にもそんな仕組みは仕込んでいないし、man page にも
特に書かれていません。どうやら 1. は妄想仕様だったようです。
申し訳ない。

 では、どうして引数に書いただけの URL に勝手に access しに
行ったかというと、実は http://host/path/* を展開しようとして
access を試みていた訳です。
 試しに echo の引数に使ってみると、URL に含まれる wildcard
をきちんと展開していることが判ると思います。HTTP の場合は一
覧許可設定になっている必要がありますけど。


 さてここで、今後の対策として幾つかの案が考えられるので挙げ
てみます。どれが適切な解決策でしょうか?みなさんのご意見をお
聞かせ下さい。

A.URL 形式に含まれる wildcard は一切展開しない仕様にする。
 折角なので展開してくれると嬉しいとは思うのですが、特に応用
法も思いつかないので、無意味な traffic を回避する意味でも禁
止しちゃいましょうか。

B.そもそも wildcard を含まない pathname は parse しない。
 これはまぁ尤もな話なんですが、wildcard を展開しようとして
directory loop で無限ループに陥らないように、inode リストを
作成しようとして stat() を呼んでるんですよね。
 でもやはりおかしな話のようにも思えるので、見直してもいいか
とは思っています。一番面倒そうな解決法ですけど。

C.現行仕様のまま更に進めて DOSDRIVE に準拠する。
 つまり 1. の仕様を実装してしまえということです。何が嬉しい
かはちと悩むところではありますし、むしろ今回のように混乱の元
になりそうな気もしてます。

                                               しらい たかし