XP(SP3)+IE7の環境で、Curlを使った画面でのIEのタイムアウトを回避する
とあるCurlというマイナーなRIAツールを使ったウェブアプリケーションを使うことになったが、そのアプリケーションはリクエストを投げて画面が帰ってくるまで5分〜30分以上かかる場合がある。
それでも、Windows XP(SP2) + IE6の環境では問題なかった。
ところが、Windows XP(SP3) + IE7の環境では5分ぐらいでタイムアウトエラーが発生するようになってしまった。
この原因がSP3にあるのか、IE7にあるのか、いまいちわからない。
Curlはブラウザのプラグインとして動作するもので、いわばAdobe Flashに似たようなものである。
内部でサーバとのコネクションを自前でWinSockでやっているのか、IEと同じINetを使っているのか、そのあたりがわからない。
Googleで検索してもCurlで、そのような症例は見つけられなかった。
(というよりも、RIAなのに5分以上もかかるのがおかしい。そんなダメアプリは世界に数個となさそうである。)
で、XPのSP3固有の問題なのか、IE7の問題なのか調べてみたが、どちらも同じくらいに原因がありそうで、これぞという情報がない。
(XPのSP3にしたらタイムアウトが発生するようになった、というケースと、IE7にするとタイムアウト時間が短くされるという事例などがみつかる。)
よくわからないので、ためしにIEの(ものと思われる)設定を変えてみることにした。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "ReceiveTimeout"=dword:00249f00
ReceiveTimeoutはタイムアウトするまでのミリ秒を指定するらしく、とりあえず、40分という(異常な)数値にしてみた。
設定後、Windowsを再起動して再チャレンジ。
5分以上かかる画面で処理させて、待つこと10分あまり。
ちゃんと応答が帰ってくるようになった。
…。
IE7の設定かな? SP3の設定かな?
(IE7とSP3の名誉のためにいっておくけれど、このダメアプリ以外でタイムアウトが発生することはいまだかつてないよ。)
よくわからないけど、とりあえず解決。