jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c
changeset 16870 f35b2bd19761
parent 14342 8435a30053c1
child 18192 fa6bd0992104
equal deleted inserted replaced
16869:4adc2d6d2d5a 16870:f35b2bd19761
   409     SOCKETADDRESS him;
   409     SOCKETADDRESS him;
   410 
   410 
   411     fdObj = (*env)->GetObjectField(env, this, psi_fdID);
   411     fdObj = (*env)->GetObjectField(env, this, psi_fdID);
   412     fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID);
   412     fd1Obj = (*env)->GetObjectField(env, this, psi_fd1ID);
   413 
   413 
   414     family = (*env)->GetIntField(env, iaObj, ia_familyID);
   414     family = getInetAddress_family(env, iaObj);
   415 
   415 
   416     if (family == IPv6 && !ipv6_supported) {
   416     if (family == IPv6 && !ipv6_supported) {
   417         JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
   417         JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
   418                         "Protocol family not supported");
   418                         "Protocol family not supported");
   419         return;
   419         return;
   722              */
   722              */
   723             NET_SocketClose(fd);
   723             NET_SocketClose(fd);
   724             return;
   724             return;
   725         }
   725         }
   726 
   726 
   727         (*env)->SetIntField(env, socketAddressObj, ia_addressID,
   727         setInetAddress_addr(env, socketAddressObj, ntohl(him.him4.sin_addr.s_addr));
   728                             ntohl(him.him4.sin_addr.s_addr));
   728         setInetAddress_family(env, socketAddressObj, IPv4);
   729         (*env)->SetIntField(env, socketAddressObj, ia_familyID, IPv4);
       
   730         (*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj);
   729         (*env)->SetObjectField(env, socket, psi_addressID, socketAddressObj);
   731     } else {
   730     } else {
   732         jbyteArray addr;
   731         jbyteArray addr;
   733         /* AF_INET6 -> Inet6Address */
   732         /* AF_INET6 -> Inet6Address */
   734         if (inet6Cls == 0) {
   733         if (inet6Cls == 0) {
   752             NET_SocketClose(fd);
   751             NET_SocketClose(fd);
   753             return;
   752             return;
   754         }
   753         }
   755         addr = (*env)->GetObjectField (env, socketAddressObj, ia6_ipaddressID);
   754         addr = (*env)->GetObjectField (env, socketAddressObj, ia6_ipaddressID);
   756         (*env)->SetByteArrayRegion (env, addr, 0, 16, (const char *)&him.him6.sin6_addr);
   755         (*env)->SetByteArrayRegion (env, addr, 0, 16, (const char *)&him.him6.sin6_addr);
   757         (*env)->SetIntField(env, socketAddressObj, ia_familyID, IPv6);
   756         setInetAddress_family(env, socketAddressObj, IPv6);
   758         scope = him.him6.sin6_scope_id;
   757         scope = him.him6.sin6_scope_id;
   759         (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, scope);
   758         (*env)->SetIntField(env, socketAddressObj, ia6_scopeidID, scope);
   760         if(scope>0) {
   759         if(scope>0) {
   761             (*env)->SetBooleanField(env, socketAddressObj, ia6_scopeidsetID, JNI_TRUE);
   760             (*env)->SetBooleanField(env, socketAddressObj, ia6_scopeidsetID, JNI_TRUE);
   762         }
   761         }