On Oct 10, 2013, at 6:52 AM, Alan Bateman wrote: > Thanks for persevering with this, we are on the right road now. > > I just looked at JDK-8010371 and the "OS" field is set to "linux". I don't > know if this is right but as IPv6 is usually enabled by default these days > then I have to guess that the person that submitted the bug has IPv6 disabled > or is running with -Djava.net.preferIPv4Stack=true, otherwise it would be a > non-issue (as you have discovered). > > The other thing about your observation is that > ThrowUnknownHostExceptionWithGaiError is creating the UHE with the both the > hostname and the error message. This resolves to the concern in one or two of > the mails that the UHE names the exception message "host" and that someone > might assume that the exception detail is the hostname. > > So thumbs up on the update to src/solaris/native/java/net/Inet4Address.c.
Thanks. >> For Windows I added a similar NET_ ThrowUnknownHostExceptionWithGaiError and >> modified Inet{4,6} to mimic the Unix case. Note that the Windows code has >> not yet been compiled pending comments. >> > Inet4AddressImpl.lookupAllHostAddr uses gethostbyname and when I look at the > MSDN documentation then I don't see EAI_AGAIN as possible error. It does list > WSATRY_AGAIN and I'm wondering if they have the same value and whether the > WSA* error is only returned by WSAGetLastError? This symbolic name definition #define EAI_AGAIN WSATRY_AGAIN is at line 99 of net_util_mh. which is included by net_util.h hence the two aforementioned values are the same. > However I think we have a problem with using gai_strerror here as the MSDN > documentation says that it is not thread safe. This means we may have to look > for a WSA equivalent or maybe drop the Windows part of the fix (using a mutex > of some synchronization might be possible but the scope would require > research and of course it wouldn't work with 3rd party native code that is > also using it). Yes, I read about the thread safety. There are other ways to do this but I wanted first to air the general idea using gai_strerror() before doing any further work. > getaddrinfo could return EAI_AGAIN[1] > > But recomended way is to just check return value of getaddrinfo and then > use WSA functions especially, FormatMessage[2] instead of gai_strerror. Thanks, I did read about FormatMessage() but forewent the usage thereof for the just stated reason. > Also we may consider rewriting this code using GetAddrInfoW sometimes in > a future to support IDN. > > PS: > Brian, please notice mixing WSA and EAI at ll. 137. Agreed, that indeed should be changed as EAI_AGAIN -> WSATRY_AGAIN. Thanks, Brian