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>する)。 -- 木村 冬樹