diff --git a/examples/bindings/java/Makefile b/examples/bindings/java/Makefile index 38849e1..04d244d 100644 --- a/examples/bindings/java/Makefile +++ b/examples/bindings/java/Makefile @@ -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 copy_dynamic_lib: - cp ../../../$(BUILD)/$(SHARED_LIB) . + cp ../../../bin/lib/$(SHARED_LIB) . jar: jar cf libzt.jar libzt.dylib zerotier/ZeroTier.class diff --git a/examples/bindings/java/README.md b/examples/bindings/java/README.md index dc6773f..0dcbda6 100644 --- a/examples/bindings/java/README.md +++ b/examples/bindings/java/README.md @@ -11,7 +11,8 @@ ### JAR file (with embedded C++ dynamic library) ``` -make example_app +make example_java_app +make copy_dynamic_lib make jar ``` diff --git a/src/libztJNI.cpp b/src/libztJNI.cpp index 8f6d33b..1ba63ab 100644 --- a/src/libztJNI.cpp +++ b/src/libztJNI.cpp @@ -27,7 +27,7 @@ /** * @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 */ @@ -200,7 +200,8 @@ namespace ZeroTier { return -1; // possibly invalid address format // 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( @@ -213,7 +214,7 @@ namespace ZeroTier { // TODO: set errno } //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); return err; } @@ -383,7 +384,7 @@ namespace ZeroTier { jint fd, jarray buf, jint len) { 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); return read_bytes; }