[Gauche-devel-jp] gauche 0.7.1 ipv6 make test failed.

アーカイブの一覧に戻る

Kimura Fuyuki fuyuk****@nigre*****
2003年 8月 7日 (木) 15:55:32 JST


make testでFreeBSD 5.1Rが落ちるという怪現象にみまわれて手間取ってしま
いました。すごいぞGauche(ちがう)。

At Wed, 06 Aug 2003 20:45:56 +0900,
Katsutoshi Itoh <cut-s****@maste*****> wrote:
> 
> test inet client socket, expects #t ==> ERROR: GOT #<error "connect failed to #<sockaddr inet \"127.0.0.
> 1:6726\">: Conn ection refused">

なんでこういうエラーが出るかというと、そもそもそんなコネクションを受け
てくれるようなソケットが開いていないからです。

test.scmの適当なところでsleepなどかましておいて調べてみると、

$ sockstat|grep gosh
fuyuki   gosh       831   4  tcp6   *:6726                *:*
                             ~~~~

ということで、このソケットはv6の接続しか受け入れてくれません。

このソケットは

(make-server-socket 'inet *inet-port* :reuse-addr? #t)

というところで作られています。IPv6が有効になっている場合には、これはた
いがいv6だけを受け入れるようなソケットを生成するはずです。

この動作が望ましいものとはとても思えないのですが、IPv6を持ち込んだとき
にいいかげんな仕様決めをしてしまったのでこうなっています。くわしくは以
下を参照してください。

http://lists.sourceforge.jp/pipermail/gauche-devel-jp/2003-May/000200.html

で、どういう解決策があるかといいますと、

1. make-server-socketがデフォルトでv6でもv4でも受かるようなソケットを
   作るようにする。

2. test.scmのなかでv4/v6を切り分けて逃げる。

1はapache2などで実際にやっているのですが、

$ sockstat|grep httpd
www      httpd      656   5  tcp46  *:80                  *:*
                             ~~~~~

こういうソケットを作る一般的なやり方があるのかどうか私は知りません(そ
のうち調べてみますが)。

一時的な対策としては2でしょうか(v6 enabledならmake <sockaddr-in6>する)。

-- 
木村 冬樹



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る