Hi, In message <_A3800@delegate-en.ML_> on 07/27/07(22:09:41) you Tero Pelander <p3ahabdyi.ml@delegate.org> wrote: |IPv6 problems in delegate9.6.3-pre5 | |Problem 1: |Can't use ipv6 dns servers. |Example: first one works ok, second one fails to contact dns server | |./delegated -v -P__:3129 SERVER=http RESOLV=dns RES_NS=192.103.98.2 |./delegated -v -P__:3129 SERVER=http RESOLV=dns RES_NS=2001_670_aa__11 | |I noticed this because the testserver has only ipv6 addresses to |nameservers in /etc/resolv.conf. It is because the socket of DeleGate to communicate with DNS servers (resolvers) is hard coded to be in IPv4. In the next release (9.6.3-pre6) I'll modify it as the enclosed patch to cope with a set of IPv6 servers. In future, it should be modified to cope with DNS servers at addresses at mixture of IPv4/IPv6... |Problem 2: ... |Problem 3: As I wrote in "IPv6NOTE.txt", I have not a plan to support the URL notation "http://[x:x:x:x:x:x:x:x]". Cheers, Yutaka -- 9 9 Yutaka Sato <pfqcabdyi.ml@delegate.org> http://delegate.org/y.sato/ ( ~ ) National Institute of Advanced Industrial Science and Technology _< >_ 1-1-4 Umezono, Tsukuba, Ibaraki, 305-8568 Japan Do the more with the less -- B. Fuller *** ../delegate9.6.3-pre5/resolvy/resolv.c Sat Feb 17 23:09:44 2007 --- resolvy/resolv.c Sat Jul 28 10:53:18 2007 *************** *** 543,573 **** { int len; int rcode; int mysock; int af; const char *me; if( Me == 0 ) Me = NewStruct(VSAddr); af = AF_INET; - /* - af = AF_INET6; - */ mysock = socket(af,SOCK_DGRAM,0); if( mysock < 0 ){ debug(DBG_FORCE,"RESOLVY cannot get socket() [errno=%d]\n", errno); return mysock; } /* len = VSA_atosa(Me,0,"0.0.0.0"); */ me = "0.0.0.0"; - /* - me = "::"; - */ len = VSA_atosa(Me,0,me); rcode = bind(mysock,(SAP)Me,len); if( rcode < 0 ){ debug(DBG_FORCE,"cannot bind() [errno=%d]\n",errno); close(mysock); --- 543,575 ---- { int len; int rcode; int mysock; int af; const char *me; + VSAddr Ns; if( Me == 0 ) Me = NewStruct(VSAddr); + RES_getns1(0,&Ns); + if( VSA_af(&Ns) == AF_INET6 ){ + af = AF_INET6; + }else af = AF_INET; mysock = socket(af,SOCK_DGRAM,0); if( mysock < 0 ){ debug(DBG_FORCE,"RESOLVY cannot get socket() [errno=%d]\n", errno); return mysock; } /* len = VSA_atosa(Me,0,"0.0.0.0"); */ + if( VSA_af(&Ns) == AF_INET6 ){ + me = "::"; + }else me = "0.0.0.0"; len = VSA_atosa(Me,0,me); rcode = bind(mysock,(SAP)Me,len); if( rcode < 0 ){ debug(DBG_FORCE,"cannot bind() [errno=%d]\n",errno); close(mysock);