Bug fixes for JNI layer

This commit is contained in:
Joseph Henry
2018-07-12 16:53:40 -07:00
parent 6916c3f36f
commit 9ccb16cbfa
3 changed files with 8 additions and 6 deletions

View File

@@ -15,7 +15,7 @@ example_java_app_1.6:
javac -source 1.6 -bootclasspath /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.41.x86_64/jre/lib/rt.jar -target 1.6 *.java javac -source 1.6 -bootclasspath /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.41.x86_64/jre/lib/rt.jar -target 1.6 *.java
copy_dynamic_lib: copy_dynamic_lib:
cp ../../../$(BUILD)/$(SHARED_LIB) . cp ../../../bin/lib/$(SHARED_LIB) .
jar: jar:
jar cf libzt.jar libzt.dylib zerotier/ZeroTier.class jar cf libzt.jar libzt.dylib zerotier/ZeroTier.class

View File

@@ -11,7 +11,8 @@
### JAR file (with embedded C++ dynamic library) ### JAR file (with embedded C++ dynamic library)
``` ```
make example_app make example_java_app
make copy_dynamic_lib
make jar make jar
``` ```

View File

@@ -27,7 +27,7 @@
/** /**
* @file * @file
* *
* Javs JNI wrapper for partially-POSIX-compliant socket API * Javs JNI wrapper for POSIX-like socket API
* JNI naming convention: Java_PACKAGENAME_CLASSNAME_METHODNAME * JNI naming convention: Java_PACKAGENAME_CLASSNAME_METHODNAME
*/ */
@@ -200,7 +200,8 @@ namespace ZeroTier {
return -1; // possibly invalid address format return -1; // possibly invalid address format
// TODO: set errno // TODO: set errno
} }
return zts_connect(fd, (struct sockaddr *)&ss, sizeof(struct sockaddr_storage)); socklen_t addrlen = ss.ss_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6);
return zts_connect(fd, (struct sockaddr *)&ss, addrlen);
} }
JNIEXPORT jint JNICALL Java_zerotier_ZeroTier_bind( JNIEXPORT jint JNICALL Java_zerotier_ZeroTier_bind(
@@ -213,7 +214,7 @@ namespace ZeroTier {
// TODO: set errno // TODO: set errno
} }
//DEBUG_TEST("RESULT => %s : %d", inet_ntoa(in4->sin_addr), ntohs(in4->sin_port)); //DEBUG_TEST("RESULT => %s : %d", inet_ntoa(in4->sin_addr), ntohs(in4->sin_port));
socklen_t addrlen = ss.ss_family == AF_INET ? 4 : 16; socklen_t addrlen = ss.ss_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6);
err = zts_bind(fd, (struct sockaddr*)&ss, addrlen); err = zts_bind(fd, (struct sockaddr*)&ss, addrlen);
return err; return err;
} }
@@ -383,7 +384,7 @@ namespace ZeroTier {
jint fd, jarray buf, jint len) jint fd, jarray buf, jint len)
{ {
jbyte *body = (*env).GetByteArrayElements((_jbyteArray *)buf, 0); jbyte *body = (*env).GetByteArrayElements((_jbyteArray *)buf, 0);
int read_bytes = read(fd, body, len); int read_bytes = zts_read(fd, body, len);
(*env).ReleaseByteArrayElements((_jbyteArray *)buf, body, 0); (*env).ReleaseByteArrayElements((_jbyteArray *)buf, body, 0);
return read_bytes; return read_bytes;
} }