From dccca7df1a893dacc50a605d707917f579d05db9 Mon Sep 17 00:00:00 2001
From: Grant Limberg <glimberg@gmail.com>
Date: Thu, 8 Sep 2016 17:45:40 -0700
Subject: [PATCH 1/3] another couple of missing semicolons

---
 java/jni/ZT_jniutils.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/java/jni/ZT_jniutils.cpp b/java/jni/ZT_jniutils.cpp
index f73c408be..495efa12e 100644
--- a/java/jni/ZT_jniutils.cpp
+++ b/java/jni/ZT_jniutils.cpp
@@ -889,14 +889,14 @@ jobject newVirtualNetworkRoute(JNIEnv *env, const ZT_VirtualNetworkRoute &route)
     jfieldID metricField = NULL;
 
     targetField = lookup.findField(virtualNetworkRouteClass, "target",
-        "Ljava/net/InetSocketAddress");
+        "Ljava/net/InetSocketAddress;");
     if(env->ExceptionCheck() || targetField == NULL)
     {
         return NULL;
     }
 
     viaField = lookup.findField(virtualNetworkRouteClass, "via",
-        "Ljava/net/InetSocketAddress");
+        "Ljava/net/InetSocketAddress;");
     if(env->ExceptionCheck() || targetField == NULL)
     {
         return NULL;

From 5fadd8bdd25577cf8fd626a2a2decbedf28c0dd6 Mon Sep 17 00:00:00 2001
From: Grant Limberg <grant.limberg@zerotier.com>
Date: Mon, 19 Sep 2016 12:54:19 -0700
Subject: [PATCH 2/3] ZT_PEER_ROLE_RELAY -> ZT_PEER_ROLE_UPSTREAM in JNI glue

---
 java/jni/ZT_jniutils.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/java/jni/ZT_jniutils.cpp b/java/jni/ZT_jniutils.cpp
index 495efa12e..411a836a9 100644
--- a/java/jni/ZT_jniutils.cpp
+++ b/java/jni/ZT_jniutils.cpp
@@ -162,7 +162,7 @@ jobject createPeerRole(JNIEnv *env, ZT_PeerRole role)
     case ZT_PEER_ROLE_LEAF:
         fieldName = "PEER_ROLE_LEAF";
         break;
-    case ZT_PEER_ROLE_RELAY:
+    case ZT_PEER_ROLE_UPSTREAM:
         fieldName = "PEER_ROLE_RELAY";
         break;
     case ZT_PEER_ROLE_ROOT:

From d87f0293e3bdbb013ce2b48d5518a22e3ecd8c71 Mon Sep 17 00:00:00 2001
From: Grant Limberg <grant.limberg@zerotier.com>
Date: Mon, 19 Sep 2016 13:40:53 -0700
Subject: [PATCH 3/3] =?UTF-8?q?Don't=20print=20a=20few=20error=20messages?=
 =?UTF-8?q?=20when=20they=20don't=20matter.=E2=80=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 java/jni/ZT_jniutils.cpp | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/java/jni/ZT_jniutils.cpp b/java/jni/ZT_jniutils.cpp
index 411a836a9..6faa91a4e 100644
--- a/java/jni/ZT_jniutils.cpp
+++ b/java/jni/ZT_jniutils.cpp
@@ -313,11 +313,20 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
         return NULL;
     }
 
-    jobject inetAddressObject = newInetAddress(env, addr);
-
-    if(env->ExceptionCheck() || inetAddressObject == NULL)
+    jobject inetAddressObject = NULL;
+    
+    if(addr.ss_family != 0)
+    {
+        inetAddressObject = newInetAddress(env, addr);
+
+        if(env->ExceptionCheck() || inetAddressObject == NULL)
+        {
+            LOGE("Error creating new inet address");
+            return NULL;
+        }
+    }
+    else
     {
-        LOGE("Error creating new inet address");
         return NULL;
     }
 
@@ -350,10 +359,9 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
         break;
         default:
         {
-            LOGE("ERROR:  addr.ss_family is not set or unknown");
             break;
         }
-    };
+    }
 
 
     jobject inetSocketAddressObject = env->NewObject(inetSocketAddressClass, inetSocketAddress_constructor, inetAddressObject, port);