@ -174,9 +174,9 @@ namespace {
return ;
}
jbyte * data = env - > GetByteArrayElements ( dataArray , NULL ) ;
void * data = env - > GetPrimitiveArrayCritical ( dataArray , NULL ) ;
memcpy ( data , frameData , frameLength ) ;
env - > ReleaseByteArrayElements ( dataArray , data , 0 ) ;
env - > ReleasePrimitiveArrayCritical ( dataArray , data , 0 ) ;
if ( env - > ExceptionCheck ( ) )
{
@ -356,13 +356,13 @@ namespace {
if ( retval > 0 )
{
jbyte * data = env - > GetByteArrayElements ( bufferObj , NULL ) ;
void * data = env - > GetPrimitiveArrayCritical ( bufferObj , NULL ) ;
memcpy ( buffer , data , retval ) ;
env - > ReleaseByteArrayElements ( bufferObj , data , JNI_ABORT ) ;
env - > ReleasePrimitiveArrayCritical ( bufferObj , data , 0 ) ;
jlong * objSize = env - > GetLongArrayElements ( objectSizeObj , NULL ) ;
jlong * objSize = ( jlong * ) env - > GetPrimitiveArrayCritical ( objectSizeObj , NULL ) ;
* out_objectSize = ( unsigned long ) objSize [ 0 ] ;
env - > ReleaseLongArrayElements ( objectSizeObj , objSize , JNI_ABORT ) ;
env - > ReleasePrimitiveArrayCritical ( objectSizeObj , objSize , 0 ) ;
}
LOGI ( " Out Object Size: %lu " , * out_objectSize ) ;
@ -700,7 +700,10 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame(
unsigned int vlanId = ( unsigned int ) in_vlanId ;
unsigned int frameLength = env - > GetArrayLength ( in_frameData ) ;
jbyte * frameData = env - > GetByteArrayElements ( in_frameData , NULL ) ;
void * frameData = env - > GetPrimitiveArrayCritical ( in_frameData , NULL ) ;
void * localData = malloc ( frameLength ) ;
memcpy ( localData , frameData , frameLength ) ;
env - > ReleasePrimitiveArrayCritical ( in_frameData , frameData , 0 ) ;
uint64_t nextBackgroundTaskDeadline = 0 ;
@ -712,15 +715,15 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame(
destMac ,
etherType ,
vlanId ,
( const void * ) frame Data,
( const void * ) local Data,
frameLength ,
& nextBackgroundTaskDeadline ) ;
jlong * outDeadline = env - > GetLongArrayElements ( out_nextBackgroundTaskDeadline , NULL ) ;
outDeadline [ 0 ] = ( jlong ) nextBackgroundTaskDeadline ;
env - > ReleaseLongArrayElements ( out_nextBackgroundTaskDeadline , outDeadline , 0 ) ;
env - > ReleaseByteArrayElements ( in_frameData , frameData , 0 ) ;
jlong * outDeadline = ( jlong * ) env - > GetPrimitiveArrayCritical ( out_nextBackgroundTaskDeadline , NULL ) ;
outDeadline [ 0 ] = ( jlong ) nextBackgroundTaskDeadline ;
env - > ReleasePrimitiveArrayCritical ( out_nextBackgroundTaskDeadline , outDeadline , 0 ) ;
return createResultObject ( env , rc ) ;
}
@ -816,8 +819,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
unsigned int addrSize = env - > GetArrayLength ( addressArray ) ;
// get the address bytes
jbyte * addr = env - > GetByteArrayElements ( addressArray , NULL ) ;
jbyte * addr = ( jbyte * ) env - > GetPrimitiveArrayCritical ( addressArray , NULL ) ;
sockaddr_storage remoteAddress = { } ;
@ -842,13 +844,16 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
else
{
// unknown address type
env - > ReleaseByteArrayElements ( addressArray , addr , 0 ) ;
env - > ReleasePrimitiveArrayCritical ( addressArray , addr , 0 ) ;
return createResultObject ( env , ZT1_RESULT_FATAL_ERROR_INTERNAL ) ;
}
env - > ReleasePrimitiveArrayCritical ( addressArray , addr , 0 ) ;
unsigned int packetLength = env - > GetArrayLength ( in_packetData ) ;
jbyte * packetData = env - > GetByteArrayElements ( in_packetData , NULL ) ;
void * packetData = env - > GetPrimitiveArrayCritical ( in_packetData , NULL ) ;
void * localData = malloc ( packetLength ) ;
memcpy ( localData , packetData , packetLength ) ;
env - > ReleasePrimitiveArrayCritical ( in_packetData , packetData , 0 ) ;
uint64_t nextBackgroundTaskDeadline = 0 ;
@ -856,7 +861,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
node ,
now ,
& remoteAddress ,
packet Data,
local Data,
packetLength ,
& nextBackgroundTaskDeadline ) ;
if ( rc ! = ZT1_RESULT_OK )
@ -864,12 +869,11 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
LOGE ( " ZT1_Node_processWirePacket returned: %d " , rc ) ;
}
jlong * outDeadline = env - > GetLongArrayElements ( out_nextBackgroundTaskDeadline , NULL ) ;
outDeadline [ 0 ] = ( jlong ) nextBackgroundTaskDeadline ;
env - > ReleaseLongArrayElements ( out_nextBackgroundTaskDeadline , outDeadline , 0 ) ;
free ( localData ) ;
env - > ReleaseByteArrayElements ( addressArray , addr , 0 ) ;
env - > ReleaseByteArrayElements ( in_packetData , packetData , 0 ) ;
jlong * outDeadline = ( jlong * ) env - > GetPrimitiveArrayCritical ( out_nextBackgroundTaskDeadline , NULL ) ;
outDeadline [ 0 ] = ( jlong ) nextBackgroundTaskDeadline ;
env - > ReleasePrimitiveArrayCritical ( out_nextBackgroundTaskDeadline , outDeadline , 0 ) ;
return createResultObject ( env , rc ) ;
}
@ -904,9 +908,9 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processBackgroundTasks(
ZT1_ResultCode rc = ZT1_Node_processBackgroundTasks ( node , now , & nextBackgroundTaskDeadline ) ;
jlong * outDeadline = env - > GetLongArrayElements ( out_nextBackgroundTaskDeadline , NULL ) ;
jlong * outDeadline = ( jlong * ) env - > GetPrimitiveArrayCritical ( out_nextBackgroundTaskDeadline , NULL ) ;
outDeadline [ 0 ] = ( jlong ) nextBackgroundTaskDeadline ;
env - > ReleaseLongArrayElements ( out_nextBackgroundTaskDeadline , outDeadline , 0 ) ;
env - > ReleasePrimitiveArrayCritical ( out_nextBackgroundTaskDeadline , outDeadline , 0 ) ;
return createResultObject ( env , rc ) ;
}