witchの日記: (メモ) FireFox の自動プロキシ設定のバグ(仕様?) 4
自動プロキシ設定ファイルの中に
isInNet(host, "192.168.0.0" , "255.255.0.0")
のようなIPアドレス指定を書いている場合、
接続しようと思っているサイトのアドレス解決ができない(DNSサーバが応答しない)と timeout になるまで画面が固まってしまう。
isInNet()を使っていなければ、固まることはなく他のウィンドウでは作業ができる。
また、timeout後はアドレス解決ができなかった旨のメッセージ画面になる。
最初何が起きているのかわからずに killall firefox-bin で殺しちゃってたよ…
…という話はどこへ持ち込めば良いのかな…
---
もしかしてDNS解決が可能かどうかを先にチェックする方法があるのかな?
isResolvable(host) を先に実行すれば固まることなく処理できるだろうか…
Proxy Client Autoconfig File Format (Mozilla 2.0の頃の)
--- 2005.11.11 13:30 追記
isResolvable(host)で直ったような気がする…
しかも、Windows版のFirefoxだとこの現象発生しないし…
もしかして、悪いのは Vine Linux Ver. 3.2 の方?
if ( isResolvable(host) ) {
if ( isInNet(host, "192.168.0.0" , "255.255.0.0")) {
return "DIRECT";
} else {
return "PROXY local_proxy:10080";
}
} else {
return "DIRECT";
}
PACは判らない… (スコア:1)
Bug 208287 - PAC: IsInNet can cause lengthy UI hangs [mozilla.org]
かなぁ、とか思うのですが。中で何をしているか [mozilla.org]を見ても等価な処理は入ってるんで、別に必要ではないと思うし。無論isInNet()が多量にあれば別途判定するのは効率がいいとは思うけど。
ところで1.0.xでのことですよね。
# PACは使ってないけど。
Re:PACは判らない… (スコア:1)
Bug 208287 とほぼ同じな気がします。
環境は Firefox 1.0.7 on Vine 3.2 ですが…
同じサーバに対してPACを使わない場合は Busyアイコン(というのかな?)になるだけで GUI がだんまりになることはないのですが、PACだと Busyアイコンにならずに数秒間だんまりになるのです。
Firefox自身と JavaScript の resolv で実装が違うのかも
実は Windows でテストする前に件のサーバ(のNAMEサーバ)が復活してしまったようなので、正しい検証になっていないと思われます。
週開けにでも再現環境を作って試そうと思っています。
(一応仕事に関係あることなので会社でできそう)
windowsMeでもisInNet()で… (スコア:1)
DNSに問い合わせるので、いろいろあるのでしょうが、読み込み中止のボタンも効かなくなる(実は死ぬほど時間がかかっているのであってハングアップではないようですが)のは困りものです。
「下の便利なフォームでログイン」はアカウントの作成が必要なんでしょうね。今回は臆病者で投稿します。…と思ったのですが、アカウントを作るまでは投稿できませんでした。せっかく臆病者になろうと思ったのに…。まずはお礼まで。
Re:windowsMeでもisInNet()で… (スコア:1)
実はあの後忙しくて windows系の再試験をしていませんでした。
Linuxでも isResolvableではダメなようです。
結局、shExpMatch() で頑張るしか無さそうですね。
(IPアドレスっぽいドメイン名の場合は諦めてもらう方向で…)