2006年8月 2日

[Namazu-devel-ja 1140] Windows 版 Namazu の SUICIDE_TIME の不具合について

寺西です。

Namazu-win32-users-ja#699 で気づいたのですが、Windows 版 Namazu では
「Namazu: セキュリティに関する考察」「リソースの消費」に

「標準では namazu.cgi は 60 秒で処理を打ち切るようになっています。
2.0.13 よりこの値を設定で変更可能にしました(SUICIDE_TIME directive)。」

とありますが、全然働かないですね。

namazu-cgi.c の中には
signal(SIGALRM, suicide);
alarm(suicide_time);
とあるのですが、alarm が

#define alarm(sec) SetTimer(NULL,1,((sec)*1000),NULL)

と何故か SetTimer になっている上、使えない SIGALRM を signal に
設定しています。

# 作りかけだったのだろうか...。

まじめに実装するのは簡単ではないので、
とりあえず 「Namazu: セキュリティに関する考察」のページには UNIX
限定と書いて、namazurc-sample のコメントに UNIX Only と書き加え
ましょうか。

まじめに実装するなら、
A. SetTimer を使う場合。
TimerProcとメッセージループを自前で用意して、WM_TIMER の処理を
行うようにする。
ただし、現在のプログラムはループ処理に向いていないので大改造の
必要あり。

B. 現在の処理をスレッドで実行する場合。
 スレッドを作って、そのスレッドで cgi の処理を行い、
WaitForSingleObject でタイムアウトを行う。
  デフォルト60秒とSUICIDE_TIMEの二段階のタイムアウトなので、
処理を2つに分けて実行する必要がある。

といったところでしょうか。いずれにしても UNIX と Windows で随分
違うのが嫌ですね。

個人的には Web サーバの設定で CGI のタイムアウトを設定すれば
なくても良いかなとは思っているのですが。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2006年8月 2日 13:01
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/43263
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。