7084032: test/java/net/Inet6Address/B6558853.java fails on Windows XP/2003 if IPv6
Reviewed-by: chegar
Contributed-by: kurchi.subhra.hazra@oracle.com
--- a/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c Fri Sep 02 16:06:08 2011 -0700
+++ b/jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c Sat Sep 03 07:46:35 2011 +0100
@@ -576,6 +576,7 @@
{
/* fields on this */
jint port;
+ jint scope;
jint timeout = (*env)->GetIntField(env, this, psi_timeoutID);
jobject fdObj = (*env)->GetObjectField(env, this, psi_fdID);
jobject fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID);
@@ -755,7 +756,11 @@
addr = (*env)->GetObjectField (env, socketAddressObj, ia6_ipaddressID);
(*env)->SetByteArrayRegion (env, addr, 0, 16, (const char *)&him.him6.sin6_addr);
(*env)->SetIntField(env, socketAddressObj, ia_familyID, IPv6);
- (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, him.him6.sin6_scope_id);
+ scope = him.him6.sin6_scope_id;
+ (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, scope);
+ if(scope>0) {
+ (*env)->SetBooleanField(env, socketAddressObj, ia6_scopeidsetID, JNI_TRUE);
+ }
}
/* fields common to AF_INET and AF_INET6 */