2006年8月 2日

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

寺西です。

NOKUBI Takatsugu wrote:
>
> 一度MingWでw3mを動くよういろいろいじってみたのですが、Windowsでの
> signalまわりはUnixのようとはとてもいえないですね。

そうです。かなりの廉価版です。


> > とりあえず 「Namazu: セキュリティに関する考察」のページには UNIX
> > 限定と書いて、namazurc-sample のコメントに UNIX Only と書き加え
> > ましょうか。
>
> 現状ではそれがいいですね。

ですね。

> > B. 現在の処理をスレッドで実行する場合。
> > といったところでしょうか。いずれにしても UNIX と Windows で随分
> > 違うのが嫌ですね。
>
> どちらもちょっと大変ですね... 私にはWindows nativeなコードはとてもか
> けそうにないです。

現在は以下の構造なので、

main()
{
:
signal();
alarm();

/* partA */

alarm();

/* partB */

return 0;
}

こんな感じでスレッドにすれば良いのではないかと思うのですが、実装する
にしても、やっぱり次期 2.2系でしょうね。

main()
{
:

#if defined(_WIN32) && defined(__MINGW32__)
hThread = CreateThread(); /* partA */

dwTimeout = suicide_time * 1000;
if (WaitForSingleObject(hThread, dwTimeout) == WAIT_TIMEOUT) {
CloseHandle(hThread);
suicide_time(SIGALRM);
}

GetExitCodeThread(hThread, &dwExitCode);
CloseHandle(hThread);

if (dwExitCode != 0) {
/* error */
return dwExitCode;
}


hThread = CreateThread(); /* partB */

dwTimeout = suicide_time * 1000;
if (WaitForSingleObject(hThread, dwTimeout) == WAIT_TIMEOUT) {
CloseHandle(hThread);
suicide_time(SIGALRM);
}

GetExitCodeThread(hThread, &dwExitCode);
CloseHandle(hThread);

if (dwExitCode != 0) {
/* error */
return dwExitCode;
}
#else
signal();
alarm();

partA();

alarm();

partB();
#endif

return 0;
}

フィルタの外部プロセスのタイムアウトもいっしょに考えるのが良いのかも
しれません。

> > 個人的には Web サーバの設定で CGI のタイムアウトを設定すれば
> > なくても良いかなとは思っているのですが。
>
> こちらの方法を推奨するようWebに書いておくのがいいのでしょうかね。

SUICIDE_TIME って保険みたいなものですからね。
--
=====================================================================
寺西 忠勝(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日 14:37
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/43273
トラックバック
コメント
コメントする




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