Print this page


Split Close
Expand all
Collapse all
          --- old/src/windows/native/java/net/net_util_md.c
          +++ new/src/windows/native/java/net/net_util_md.c
↓ open down ↓ 226 lines elided ↑ open up ↑
 227  227  NET_GetFileDescriptorID(JNIEnv *env)
 228  228  {
 229  229      jclass cls = (*env)->FindClass(env, "java/io/FileDescriptor");
 230  230      CHECK_NULL_RETURN(cls, NULL);
 231  231      return (*env)->GetFieldID(env, cls, "fd", "I");
 232  232  }
 233  233  
 234  234  jint  IPv6_supported()
 235  235  {
 236  236      HMODULE lib;
 237      -    int fd = socket(AF_INET6, SOCK_STREAM, 0) ;
      237 +    int fd = (int)socket(AF_INET6, SOCK_STREAM, 0) ;
 238  238      if (fd < 0) {
 239  239          return JNI_FALSE;
 240  240      }
 241  241      closesocket (fd);
 242  242  
 243  243      if ((lib = LoadLibrary ("ws2_32.dll")) == NULL) {
 244  244          return JNI_FALSE;
 245  245      }
 246  246      if ((getaddrinfo_ptr = (LPFN_GETADDRINFO)GetProcAddress (lib, "getaddrinfo")) == NULL) {
 247  247          FreeLibrary (lib);
↓ open down ↓ 436 lines elided ↑ open up ↑
 684  684          closesocket (b->ipv4_fd);
 685  685          b->ipv4_fd = -1;
 686  686          return 0;
 687  687      }
 688  688  
 689  689      /* We need to bind on both stacks, with the same port number */
 690  690  
 691  691      memset (&oaddr, 0, sizeof(oaddr));
 692  692      if (family == AF_INET) {
 693  693          ofamily = AF_INET6;
 694      -        fd = b->ipv4_fd;
 695      -        ofd = b->ipv6_fd;
      694 +        fd = (int)b->ipv4_fd;
      695 +        ofd = (int)b->ipv6_fd;
 696  696          port = (u_short)GET_PORT (b->addr);
 697  697          IN6ADDR_SETANY (&oaddr.him6);
 698  698          oaddr.him6.sin6_port = port;
 699  699      } else {
 700  700          ofamily = AF_INET;
 701      -        ofd = b->ipv4_fd;
 702      -        fd = b->ipv6_fd;
      701 +        ofd = (int)b->ipv4_fd;
      702 +        fd = (int)b->ipv6_fd;
 703  703          port = (u_short)GET_PORT (b->addr);
 704  704          oaddr.him4.sin_family = AF_INET;
 705  705          oaddr.him4.sin_port = port;
 706  706          oaddr.him4.sin_addr.s_addr = INADDR_ANY;
 707  707      }
 708  708  
 709  709      rv = NET_Bind (fd, (struct sockaddr *)b->addr, SOCKETADDRESS_LEN(b->addr));
 710  710      if (rv == SOCKET_ERROR) {
 711  711          CLOSE_SOCKETS_AND_RETURN;
 712  712      }
↓ open down ↓ 24 lines elided ↑ open up ↑
 737  737           * succeed sooner.
 738  738           */
 739  739          for (retries = 0; retries < SOCK_RETRIES; retries ++) {
 740  740              int len;
 741  741              close_fd = fd; fd = -1;
 742  742              close_ofd = ofd; ofd = -1;
 743  743              b->ipv4_fd = SOCKET_ERROR;
 744  744              b->ipv6_fd = SOCKET_ERROR;
 745  745  
 746  746              /* create two new sockets */
 747      -            fd = socket (family, sotype, 0);
      747 +            fd = (int)socket (family, sotype, 0);
 748  748              if (fd == SOCKET_ERROR) {
 749  749                  CLOSE_SOCKETS_AND_RETURN;
 750  750              }
 751      -            ofd = socket (ofamily, sotype, 0);
      751 +            ofd = (int)socket (ofamily, sotype, 0);
 752  752              if (ofd == SOCKET_ERROR) {
 753  753                  CLOSE_SOCKETS_AND_RETURN;
 754  754              }
 755  755  
 756  756              /* bind random port on first socket */
 757  757              SET_PORT (&oaddr, 0);
 758  758              rv = NET_Bind (ofd, (struct sockaddr *)&oaddr, SOCKETADDRESS_LEN(&oaddr));
 759  759              if (rv == SOCKET_ERROR) {
 760  760                  CLOSE_SOCKETS_AND_RETURN;
 761  761              }
↓ open down ↓ 80 lines elided ↑ open up ↑
 842  842          if (family == AF_INET) { /* will convert to IPv4-mapped address */
 843  843              memset((char *) caddr, 0, 16);
 844  844              address = (*env)->GetIntField(env, iaObj, ia_addressID);
 845  845              if (address == INADDR_ANY) {
 846  846                  /* we would always prefer IPv6 wildcard address
 847  847                  caddr[10] = 0xff;
 848  848                  caddr[11] = 0xff; */
 849  849              } else {
 850  850                  caddr[10] = 0xff;
 851  851                  caddr[11] = 0xff;
 852      -                caddr[12] = ((address >> 24) & 0xff);
 853      -                caddr[13] = ((address >> 16) & 0xff);
 854      -                caddr[14] = ((address >> 8) & 0xff);
 855      -                caddr[15] = (address & 0xff);
      852 +                caddr[12] = (jbyte)((address >> 24) & 0xff);
      853 +                caddr[13] = (jbyte)((address >> 16) & 0xff);
      854 +                caddr[14] = (jbyte)((address >> 8) & 0xff);
      855 +                caddr[15] = (jbyte)(address & 0xff);
 856  856              }
 857  857          } else {
 858  858              ipaddress = (*env)->GetObjectField(env, iaObj, ia6_ipaddressID);
 859  859              scopeid = (jint)(*env)->GetIntField(env, iaObj, ia6_scopeidID);
 860  860              cached_scope_id = (jint)(*env)->GetIntField(env, iaObj, ia6_cachedscopeidID);
 861  861              (*env)->GetByteArrayRegion(env, ipaddress, 0, 16, caddr);
 862  862          }
 863  863  
 864  864          memset((char *)him6, 0, sizeof(struct SOCKADDR_IN6));
 865  865          him6->sin6_port = (u_short) htons((u_short)port);
↓ open down ↓ 129 lines elided ↑ open up ↑
 995  995          }
 996  996  
 997  997  
 998  998        } /* while */
 999  999  
1000 1000      return timeout;
1001 1001  }
1002 1002  
1003 1003  int NET_Socket (int domain, int type, int protocol) {
1004 1004      int sock;
1005      -    sock = socket (domain, type, protocol);
     1005 +    sock = (int)socket (domain, type, protocol);
1006 1006      if (sock != INVALID_SOCKET) {
1007 1007          SetHandleInformation((HANDLE)(uintptr_t)sock, HANDLE_FLAG_INHERIT, FALSE);
1008 1008      }
1009 1009      return sock;
1010 1010  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX