パスワードを忘れた? アカウント作成
441838 journal

witchの日記: (メモ) FireFox の自動プロキシ設定のバグ(仕様?) 4

日記 by witch

自動プロキシ設定ファイルの中に
    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";
    }

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Bug 208287 - PAC: IsInNet can cause lengthy UI hangs [mozilla.org]
    かなぁ、とか思うのですが。中で何をしているか [mozilla.org]を見ても等価な処理は入ってるんで、別に必要ではないと思うし。無論isInNet()が多量にあれば別途判定するのは効率がいいとは思うけど。

    ところで1.0.xでのことですよね。
    # PACは使ってないけど。

    • by witch (3127) on 2005年11月11日 23時10分 (#830265) 日記
      コメントありがとうございます。
      Bug 208287 とほぼ同じな気がします。
      環境は Firefox 1.0.7 on Vine 3.2 ですが…

      同じサーバに対してPACを使わない場合は Busyアイコン(というのかな?)になるだけで GUI がだんまりになることはないのですが、PACだと Busyアイコンにならずに数秒間だんまりになるのです。
      Firefox自身と JavaScript の resolv で実装が違うのかも

      実は Windows でテストする前に件のサーバ(のNAMEサーバ)が復活してしまったようなので、正しい検証になっていないと思われます。

      週開けにでも再現環境を作って試そうと思っています。
      (一応仕事に関係あることなので会社でできそう)

      親コメント
  • by adaju (29494) on 2005年12月12日 1時59分 (#846876)
    WindowsMe上のfirefox1.5で 同様の現象が起きて、検索でこのページを見つけました。 おかげさまでisInNet()を使用せずに、代替のproxy.pacを書くことができました。 ただし、私のところではisResolvable(host)でもだめです。dnsDomainIs(host, ".exsample.jp")とshExpMatch(host, "192.168.0.*")を組み合わせて解決できました。
    DNSに問い合わせるので、いろいろあるのでしょうが、読み込み中止のボタンも効かなくなる(実は死ぬほど時間がかかっているのであってハングアップではないようですが)のは困りものです。
    「下の便利なフォームでログイン」はアカウントの作成が必要なんでしょうね。今回は臆病者で投稿します。…と思ったのですが、アカウントを作るまでは投稿できませんでした。せっかく臆病者になろうと思ったのに…。まずはお礼まで。
    • adajuさん、コメントありがとうございます。
      実はあの後忙しくて windows系の再試験をしていませんでした。
      Linuxでも isResolvableではダメなようです。
      結局、shExpMatch() で頑張るしか無さそうですね。
      (IPアドレスっぽいドメイン名の場合は諦めてもらう方向で…)

      親コメント
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...