title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/04 >>123456789101112131415161718192021222324252627282930
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM 502.2 Bad Gateway on Vista with IIS7.0
小さくも大きくも閉じたりもしません
09/02/21 02:54 / PMailServer2

掲示板でご指摘頂いたので、あれこれ確認をしていたのですが、どうにも Vista + 付属IIS7.0 の挙動がおかしいです。

上記の環境で Webmail を実行すると、
HTTP Error 502.2 - Bad Gateway
Description The specified CGI application did not return a complete set of HTTP headers.
Error Code: 0x00000000

と出てきます。Error Code 0 ってエラー出てないじゃん・・・

CGI は基本的に標準入力(StdIn)でリクエストを受け取り、標準出力(StdOut)で HTML などを吐き出すのですが、この標準入力を受け取る為に
GetStdHandle(STD_INPUT_HANDLE)
を実行すると、なぜか INVALID_HANDLE 即ち無効のハンドルとエラーが返ってきます。(出力の STD_OUTPUT_HANDLE はエラーは出ません)
どうやら CGI 実行時のパイプ処理とかに問題があるような気がします。

IIS7.0 でも Windows 2008 や Windows 7 ではこのエラーは発生しませんので Vista + IIS7.0 の組み合わせで発生するようです。ついでに Vista に Apache 2.2.11 をインストールして同様の確認を行いましたが問題なく動作するので Vista 付属の IIS7.0 固有の問題の可能性があります。

現在 CGI の開発は Delphi 2007 R2 で行っておりますので、Delphi 2007 R2 が悪いのかもしれないと、Visual Studio 2008 Express でコンソールアプリを作って GetStdHandle の確認しましたら、今度は 500 の内部エラーが発生・・・開発環境の問題では無さそうです。

しつこく Delphi でも純粋なコンソールアプリを作って StdIn は触らずに StdOut のみさわり出力したら動きます。(当然と言えば当然ですが)
ちなみにどのexeも DOS プロンプトで実行すれば普通に動きます。というか動かなければ Apache でも動きません。

散々ぐぐって見たのですが、海外でも同じように問題が出ているようで「GetStdHandle でエラーが出るけどなんで?」とか「StdIn を無理矢理初期化したら、リクエストが消えたよ?」とか色々出ています。
どこか解決のヒントでも無いかなと翻訳しつつ読んでいたのですが、最終的に「動かないんじゃない?」とか「IIS6.0 ではバッチリだからいいや」とか諦めムードです。

蛇足になりますが、ActivePerl でも同様のエラーが出ることがあるようでして、DLL を指定することで回避できているケースもあるようです(おそらく DLL ということは ISAPI 版かと。さすがに ISAPI版 Webmail をこれから開発する余裕はありません・・・以前やろうと思いましたがIIS専用になってしまいますので断念しました。ミリオンクラスで売れればやりますが)

2009/03/27 今更のような追記:
PMail Server サポート掲示板
こちらで対処方法を見つけています。
バグなのか仕様なのかよくわからないですね。

[更新日付:2009/03/27 14:19:03]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+a78c6388602291987b0b411fc36c5f540b718076]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+a78c6388602291987b0b411fc36c5f540b718076]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.