changeset 1822:01f51b57dc8b

8196224: Even better Internet address support Reviewed-by: chegar, rriggs, rhalade, vtewari
author igerasim
date Mon, 05 Feb 2018 15:20:13 -0800
parents 76d2b2133614
children 8dba6e2cedb5
files src/solaris/native/java/net/PlainDatagramSocketImpl.c
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Tue Jun 26 23:58:35 2018 +0100
+++ b/src/solaris/native/java/net/PlainDatagramSocketImpl.c	Mon Feb 05 15:20:13 2018 -0800
@@ -1137,6 +1137,7 @@
     struct in_addr in;
     jobjectArray addrArray;
     jsize len;
+    jint family;
     jobject addr;
     int i;
 
@@ -1166,7 +1167,9 @@
      */
     for (i = 0; i < len; i++) {
         addr = (*env)->GetObjectArrayElement(env, addrArray, i);
-        if (getInetAddress_family(env, addr) == IPv4) {
+        family = getInetAddress_family(env, addr);
+        JNU_CHECK_EXCEPTION(env);
+        if (family == IPv4) {
             JNU_CHECK_EXCEPTION(env);
             in.s_addr = htonl(getInetAddress_addr(env, addr));
             JNU_CHECK_EXCEPTION(env);
@@ -2086,6 +2089,7 @@
 
     jobject fdObj = (*env)->GetObjectField(env, this, pdsi_fdID);
     jint fd;
+    jint family;
     jint ipv6_join_leave;
 
     if (IS_NULL(fdObj)) {
@@ -2107,7 +2111,9 @@
     ipv6_join_leave = ipv6_available();
 
 #ifdef __linux__
-    if (getInetAddress_family(env, iaObj) == IPv4) {
+    family = getInetAddress_family(env, iaObj);
+    JNU_CHECK_EXCEPTION(env);
+    if (family == IPv4) {
         JNU_CHECK_EXCEPTION(env);
         ipv6_join_leave = JNI_FALSE;
     }