Shinya TAKEBAYASHI
makot****@kanon*****
2009年 1月 6日 (火) 11:41:12 JST
田沼 さま 竹林です. 今年もよろしくお願い致します. > 以前に竹林さんから軽く報告されていて > 覚えてはいたのですが再現しなかったので古いバージョンでのバグかと > 勝手に思っていました…。すいません。 > (32 bit については 10.x.x.x と 127.0.0.1 で確認していました…) あ,これです. > まるやまさんの C スタイルの for 文か while 文あたりで修正して > リポジトリにコミットしておきます。 お手数ですが,お願いします. 直したものは stable/ultramonkey-l7/branches/v2.1.1-0 に コミットして頂けると助かります. ---------------------------------------------------------------- Shinya TAKEBAYASHI E-mail : makot****@kanon***** GPG ID : FFD20D1F GPG FP : 7B5B E0FC B785 7457 683C 47D6 5564 DDDD FFD2 0D1F ---------------------------------------------------------------- Kouhei TANUMA <tanum****@nttco*****> wrote in message <20090****@nttco***** > *** Subject: Re: 32bit での 2.1.0-0 l7directord 起動時 "Range iterator outside integer range" *** Date: 2009/01/06 10:52:01 > まるやま 様 > 竹林 様 > > 田沼と申します。 > ご連絡ありがとうございます。 > > まるやまさんの対処で問題ありません。 > > 本件については real に指定した IP アドレスの処理部分のバグで > 64 bit の場合 255.255.255.255 でも大丈夫なのですが > 32 bit の場合 127.255.255.255 以上の IP アドレスを指定すると > int の範囲を超えて落ちてしまいます。 > > 以前に竹林さんから軽く報告されていて > 覚えてはいたのですが再現しなかったので古いバージョンでのバグかと > 勝手に思っていました…。すいません。 > (32 bit については 10.x.x.x と 127.0.0.1 で確認していました…) > > > また、対処については、perldoc perldiag によると > > Range iterator outside integer range > (F) One (or both) of the numeric arguments to the range operator ".." are > outside the range which can be represented by integers internally. One possible > workaround is to force Perl to use magical string increment by > prepending "0" to your numbers. > > ということなので、頭に 0 をつけて強制的にマジカルインクリメント、 > つまり > > - for my $int_ip ($int_ip1 .. $int_ip2) { > + for my $int_ip ("0$int_ip1" .. "0$int_ip2") { > > こうしてやると大丈夫なようですが、多少トリッキーですので > まるやまさんの C スタイルの for 文か while 文あたりで修正して > リポジトリにコミットしておきます。 > > > On Mon, 05 Jan 2009 22:51:32 +0900 > Shinya TAKEBAYASHI <makot****@kanon*****> wrote: > > > まるやま さま > > > > > > 竹林です. > > > > 本件,ご連絡ありがとうございます. > > > > まるやまさんの対処で動いているようであれば,取り急ぎ今のまま > > お使いいただけますか. > > > > こちらでも試してみます. > > > > > > // おふれこ > > > > リリース前の版で IP アドレスを int の数値に変換するルーチン(ip_to_int)で > > Range iterator outside integer range が出たことがあったのですが・・・ > > それと関連しているかもしれません. > > > > 田沼さん,この辺どうでしたっけ. > > > > ---------------------------------------------------------------- > > Shinya TAKEBAYASHI > > > > E-mail(private): makot****@kanon***** > > GPG ID : FFD20D1F > > GPG FP : 7B5B E0FC B785 7457 683C 47D6 5564 DDDD FFD2 0D1F > > ---------------------------------------------------------------- > > > > > > *** MARUYAMA Toshio wrote in message <20090105115219.18335.q > > mail****@web35*****> > > *** Subject: [Ultramonkey-l7-users 150] 32bit での 2.1.0-0 l7directord 起動 時 " > > Range iterator outside integer range" > > *** Date: Mon, 5 Jan 2009 20:52:19 +0900 (JST) > > > まるやまと申します。 > > > > > > UltraMonkey-L7 2.1.0-0 がリリースされたということで、 > > > 2.0.0 からの乗り換えを試したところ、 > > > l7directord の起動で、以下のエラーが出て起動できませんでした。 > > > > > > # /etc/init.d/l7directord start > > > Starting l7directord ... Range iterator outside integer range at > > > /usr/sbin/l7directord line 1167, <$_[...]> line 33. > > > > > > [FAILED] > > > > > > 環境は、32bit CentOS 5.2 です。 > > > > > > > > > l7directord.cf では以下のようにしています。 > > > > > > virtual=192.168.0.226:9000 > > > real=192.168.0.226:80 masq 1 > > > real=192.168.0.222:80 masq 1 > > > > > > > > > 以下の修正をして、何とか動かしています。 > > > 問題無いでしょうか。 > > > > > > --- l7directord.orig 2008-12-16 08:02:10.000000000 +0900 > > > +++ l7directord 2009-01-05 20:34:25.000000000 +0900 > > > @@ -1164,7 +1164,8 @@ > > > } > > > > > > my @reals = (); > > > - for my $int_ip ($int_ip1 .. $int_ip2) { > > > + # for my $int_ip ($int_ip1 .. $int_ip2) { > > > + for ( my $int_ip = $int_ip1 ; $int_ip <= $int_ip2 ; $int_ip++ ) { > > > my %new_real = %real; > > > $new_real{server}{ip } = int_to_ip($int_ip); > > > $new_real{server}{port} = $resolved_port; > > > > > > > > > 以上よろしくお願いします。 > > > > > > -------------------------------------- > > > Power up the Internet with Yahoo! Toolbar. > > > http://pr.mail.yahoo.co.jp/toolbar/ > >