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
copy_dynamic_lib:
cp ../../../$(BUILD)/$(SHARED_LIB) .
cp ../../../bin/lib/$(SHARED_LIB) .
jar:
jar cf libzt.jar libzt.dylib zerotier/ZeroTier.class

View File

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

View File

@@ -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;
}