return CA_STATUS_INVALID_PARAM;
}
- jstring jni_str_address = CAEDRNativeGetAddressFromDeviceSocket(env, jni_obj_socket);
- if (!jni_str_address)
- {
- OIC_LOG(ERROR, TAG, "jni_str_address is null");
- return CA_STATUS_FAILED;
- }
- const char* address = (*env)->GetStringUTFChars(env, jni_str_address, NULL);
-
// check it whether is still connected or not through google api
jboolean ret = CAEDRIsConnectedForSocket(env, jni_obj_socket);
if (!ret)
// remove socket to list
CAEDRNativeRemoveDeviceSocket(env, jni_obj_socket);
- (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
- (*env)->DeleteLocalRef(env, jni_str_address);
-
return CA_STATUS_FAILED;
}
if (!jni_cid_BTsocket)
{
OIC_LOG(ERROR, TAG, "jni_cid_BTsocket is null");
- (*env)->DeleteLocalRef(env, jni_str_address);
return CA_STATUS_FAILED;
}
jmethodID jni_mid_getInputStream = (*env)->GetMethodID(env, jni_cid_BTsocket,
{
OIC_LOG(ERROR, TAG, "jni_obj_inputStream is null");
(*env)->DeleteLocalRef(env, jni_cid_BTsocket);
- (*env)->DeleteLocalRef(env, jni_str_address);
return CA_STATUS_FAILED;
}
if (!jni_cid_InputStream)
{
OIC_LOG(ERROR, TAG, "jni_cid_InputStream is null");
- goto exit;
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
+ (*env)->DeleteLocalRef(env, jni_cid_BTsocket);
+ return CA_STATUS_FAILED;
}
jmethodID jni_mid_available = (*env)->GetMethodID(env, jni_cid_InputStream,
CAConnectedDeviceInfo_t *deviceInfo = NULL;
if (0 < available)
{
+ jstring jni_str_address = CAEDRNativeGetAddressFromDeviceSocket(env, jni_obj_socket);
+ if (!jni_str_address)
+ {
+ OIC_LOG(ERROR, TAG, "jni_str_address is null");
+ goto exit;
+ }
+
+ const char* address = (*env)->GetStringUTFChars(env, jni_str_address, NULL);
+ if (!address)
+ {
+ OIC_LOG(ERROR, TAG, "address is null");
+ (*env)->DeleteLocalRef(env, jni_str_address);
+ goto exit;
+ }
+
OIC_LOG_V(DEBUG, TAG, "get InputStream..%d, %s", id, address);
jmethodID jni_mid_read = (*env)->GetMethodID(env, jni_cid_InputStream,
"read", "([BII)I");
if (!jni_mid_read)
{
OIC_LOG(ERROR, TAG, "jni_mid_read is null");
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
if (!deviceInfo)
{
OIC_LOG(ERROR, TAG, "failed to get device info from list");
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
if (!deviceInfo->recvData)
{
OIC_LOG(ERROR, TAG, "out of memory");
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
}
jbyteArray jbuf = (*env)->NewByteArray(env, (jint) bufSize - deviceInfo->recvDataLen);
+ if (!jbuf)
+ {
+ OIC_LOG(ERROR, TAG, "jbuf is null");
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
+ goto exit;
+ }
+
jint recvLen = (*env)->CallIntMethod(env, jni_obj_inputStream, jni_mid_read,
jbuf, (jint) 0,
(jint) bufSize - deviceInfo->recvDataLen);
if (-1 == recvLen)
{
+ OIC_LOG(ERROR, TAG, "recvLen is -1");
(*env)->DeleteLocalRef(env, jbuf);
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
jbyte* buf = (*env)->GetByteArrayElements(env, jbuf, NULL);
if (!buf)
{
+ OIC_LOG(ERROR, TAG, "buf is null");
(*env)->DeleteLocalRef(env, jbuf);
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
memcpy(deviceInfo->recvData + deviceInfo->recvDataLen, (const char*) buf, recvLen);
OIC_LOG(ERROR, TAG, "out of memory");
(*env)->ReleaseByteArrayElements(env, jbuf, buf, 0);
(*env)->DeleteLocalRef(env, jbuf);
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
deviceInfo->recvData = newBuf;
(*env)->ReleaseByteArrayElements(env, jbuf, buf, 0);
(*env)->DeleteLocalRef(env, jbuf);
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
goto exit;
}
}
(*env)->ReleaseByteArrayElements(env, jbuf, buf, 0);
(*env)->DeleteLocalRef(env, jbuf);
+ (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
+ (*env)->DeleteLocalRef(env, jni_str_address);
}
- (*env)->DeleteLocalRef(env, jni_obj_inputStream);
(*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
(*env)->DeleteLocalRef(env, jni_cid_BTsocket);
- (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
- (*env)->DeleteLocalRef(env, jni_str_address);
return CA_STATUS_OK;
exit:
- (*env)->DeleteLocalRef(env, jni_obj_inputStream);
(*env)->DeleteLocalRef(env, jni_cid_InputStream);
+ (*env)->DeleteLocalRef(env, jni_obj_inputStream);
(*env)->DeleteLocalRef(env, jni_cid_BTsocket);
- (*env)->ReleaseStringUTFChars(env, jni_str_address, address);
- (*env)->DeleteLocalRef(env, jni_str_address);
return CA_STATUS_FAILED;
}