src/windows/native/java/net/Inet6AddressImpl.c

Print this page




  76 static jclass ni_ia4cls;
  77 static jclass ni_ia6cls;
  78 static jmethodID ni_ia4ctrID;
  79 static jmethodID ni_ia6ctrID;
  80 static int initialized = 0;
  81 
  82 JNIEXPORT jobjectArray JNICALL
  83 Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
  84                                                 jstring host) {
  85     const char *hostname;
  86     jobjectArray ret = 0;
  87     int retLen = 0;
  88     jboolean preferIPv6Address;
  89     static jfieldID ia_preferIPv6AddressID;
  90 
  91     int error=0;
  92     struct addrinfo hints, *res, *resNew = NULL;
  93 
  94     if (!initialized) {
  95       ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");

  96       ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);

  97       ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");

  98       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);

  99       ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");

 100       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);

 101       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");

 102       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");

 103       initialized = 1;
 104     }
 105     if (IS_NULL(host)) {
 106         JNU_ThrowNullPointerException(env, "host is null");
 107         return 0;
 108     }
 109     hostname = JNU_GetStringPlatformChars(env, host, JNI_FALSE);
 110     CHECK_NULL_RETURN(hostname, NULL);
 111 
 112     if (ia_preferIPv6AddressID == NULL) {
 113         jclass c = (*env)->FindClass(env,"java/net/InetAddress");
 114         if (c)  {
 115             ia_preferIPv6AddressID =
 116                 (*env)->GetStaticFieldID(env, c, "preferIPv6Address", "Z");
 117         }
 118         if (ia_preferIPv6AddressID == NULL) {
 119             JNU_ReleaseStringPlatformChars(env, host, hostname);
 120             return NULL;
 121         }
 122     }




  76 static jclass ni_ia4cls;
  77 static jclass ni_ia6cls;
  78 static jmethodID ni_ia4ctrID;
  79 static jmethodID ni_ia6ctrID;
  80 static int initialized = 0;
  81 
  82 JNIEXPORT jobjectArray JNICALL
  83 Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
  84                                                 jstring host) {
  85     const char *hostname;
  86     jobjectArray ret = 0;
  87     int retLen = 0;
  88     jboolean preferIPv6Address;
  89     static jfieldID ia_preferIPv6AddressID;
  90 
  91     int error=0;
  92     struct addrinfo hints, *res, *resNew = NULL;
  93 
  94     if (!initialized) {
  95       ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
  96       CHECK_NULL_RETURN(ni_iacls, NULL);
  97       ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
  98       CHECK_NULL_RETURN(ni_iacls, NULL);
  99       ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
 100       CHECK_NULL_RETURN(ni_ia4cls, NULL);
 101       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
 102       CHECK_NULL_RETURN(ni_ia4cls, NULL);
 103       ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
 104       CHECK_NULL_RETURN(ni_ia6cls, NULL);
 105       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
 106       CHECK_NULL_RETURN(ni_ia6cls, NULL);
 107       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
 108       CHECK_NULL_RETURN(ni_ia4ctrID, NULL);
 109       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
 110       CHECK_NULL_RETURN(ni_ia6ctrID, NULL);
 111       initialized = 1;
 112     }
 113     if (IS_NULL(host)) {
 114         JNU_ThrowNullPointerException(env, "host is null");
 115         return 0;
 116     }
 117     hostname = JNU_GetStringPlatformChars(env, host, JNI_FALSE);
 118     CHECK_NULL_RETURN(hostname, NULL);
 119 
 120     if (ia_preferIPv6AddressID == NULL) {
 121         jclass c = (*env)->FindClass(env,"java/net/InetAddress");
 122         if (c)  {
 123             ia_preferIPv6AddressID =
 124                 (*env)->GetStaticFieldID(env, c, "preferIPv6Address", "Z");
 125         }
 126         if (ia_preferIPv6AddressID == NULL) {
 127             JNU_ReleaseStringPlatformChars(env, host, hostname);
 128             return NULL;
 129         }
 130     }