Bart,
 
Good question, and there is no easy answer.  The Linux world seems to be having convulsions over it, and every time I re-learn how to shut it off (it does bad things to my DNS lookup times), I find comments about how poorly designed it is.  I'm not saying the comments are correct, but I note them.
 
For now, IPv6 is probably better left for opt-in than opt-out.  There should probably also be very good separation between IPv4 and IPv6 name resolvers, allowing a clear separation of the associated primitives and methods that depend on them.
 
Bill
 


From: pharo-project-bounces@lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Bart Gauquie
Sent: Tuesday, November 17, 2009 2:52 PM
To: Pharo-project@lists.gforge.inria.fr
Subject: Re: [Pharo-project] Socket accepts ipv6 addresses, but can not connect to them

Hi,

If i modify the #useOldNetwork method, everything works. Thanks for that tip.

However: is this not a 'bug' in Pharo to have ipv6 as default, since it is not working properly? With my simple SocketTest not working for instance? 

Kind regards,

Bart


2009/11/16 Schwab,Wilhelm K <bschwab@anest.ufl.edu>
FWIW, I am fairly certain the IPv6 changes are incomplete at best.  Others have reported needing to override #useOldNetwork to always answer true, and I have noted things that are called "in the clear" when they should be hidden behind an old net test.
 
So far, I have done what amounts to some glorified loopback tests and have watched MC download packages from IPv4 addresses.
 
Bill
 
 


From: pharo-project-bounces@lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Bart Gauquie
Sent: Monday, November 16, 2009 4:26 PM
To: pharo-project@lists.gforge.inria.fr
Subject: [Pharo-project] Socket accepts ipv6 addresses, but can not connect to them

Dear all,

I'm using Pharo1.0rc1 Latest update: #10493, on Windows Vista , runtime 3.11.4.

Following test is going fine:
SocketTest>>testConnectToLocalhostThroughNetNameResolverAddressForNameLocalhost
|serverSocket clientSocket address|

serverSocket := Socket newTCP.
clientSocket := Socket newTCP.

[ serverSocket listenOn: 6665.
address := NetNameResolver addressForName: '127.0.0.1' timeout: 20.
clientSocket connectTo: address port: 6665]
ensure: [
clientSocket close.
serverSocket close.
]

(connect to a socket on localhost)

however, following test:

testConnectToLocalhostThroughNetNameResolverLocalHostAddress
|serverSocket clientSocket address|

serverSocket := Socket newTCP.
clientSocket := Socket newTCP.

[ serverSocket listenOn: 6665.
address := NetNameResolver localHostAddress.
clientSocket connectTo: address port: 6665]
ensure: [
clientSocket close.
serverSocket close.
]

is failing with following error:
ConnectionTimedOut: Cannot connect to: fe80::6dd3:7860:93c9:46a0%10(PC_xxx),6665(6665)

[] in Socket>>connectTo:waitForConnectionFor:
Socket>>waitForConnectionFor:ifTimedOut:
Socket>>connectTo:waitForConnectionFor:
Socket>>connectTo:
Socket>>connectTo:port:
[] in SocketTest>>testConnectToLocalhostThroughNetNameResolverLocalHostAddress
BlockClosure>>ensure:
SocketTest>>testConnectToLocalhostThroughNetNameResolverLocalHostAddress
SocketTest(TestCase)>>performTest
[] in [] in SocketTest(TestCase)>>runCase
BlockClosure>>ensure:

I understand that the above address is an ipv6 address. (the NetNameResolver localHostAddress lookup returns on my machine a ipv6 address)
If i do ipconfig on my machine:

Ethernet-adapter LAN-verbinding:

Verbindingsspec. DNS-achtervoegsel: lan
Link-local IPv6-adres . . . . . . : fe80::6dd3:7860:93c9:46a0%10
IPv4-adres. . . . . . . . . . . . : 10.0.0.39
Subnetmasker. . . . . . . . . . . : 255.255.255.0
Standaardgateway. . . . . . . . . : 10.0.0.138

its the same ipv6 address.

Is it normal that the Socket class can not handle ipv6 addresses ? I get a timeoutexception on it (however this happens immediately).

Is this the behaviour that i can expect ? 
The reason i noticed this is that I'm trying Magma, the server in a separate image but on the same machine, under ubuntu 9.10 everything worked fine, under Windows Vista it crashed, since internally it also uses NetNameResolver localHostAddress to connect to 'localhost', and i got the same connect timeout exception.

In attachment, a fileout of the SocketTest (had to create a new testclass for this :-( ) 

Kind regards,

Bart

--
imagination is more important than knowledge - Albert Einstein
Logic will get you from A to B. Imagination will take you everywhere - Albert Einstein
Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. - Albert Einstein
The true sign of intelligence is not knowledge but imagination. - Albert Einstein
Gravitation is not responsible for people falling in love. - Albert Einstein

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project