summaryrefslogtreecommitdiff
path: root/jni
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2016-11-29 22:54:00 +0100
committeryvesf <yvesf-git@xapek.org>2016-12-01 23:35:43 +0100
commit52914b0f7bffed0649372254268b7a07a42b1448 (patch)
treedcbbfe8a11553c0fd7b392590e7c99e5e7f72e31 /jni
parent13c7e0387fdcfb3d0a313d9f0d80ba1dcde10ed4 (diff)
downloadandiodine-52914b0f7bffed0649372254268b7a07a42b1448.tar.gz
andiodine-52914b0f7bffed0649372254268b7a07a42b1448.zip
Pass the request-type (qtype) to iodine
Closes #18
Diffstat (limited to 'jni')
-rw-r--r--jni/iodine-client.c14
-rw-r--r--jni/iodine/src/client.c3
2 files changed, 16 insertions, 1 deletions
diff --git a/jni/iodine-client.c b/jni/iodine-client.c
index 0a0c8ce..6b9fcea 100644
--- a/jni/iodine-client.c
+++ b/jni/iodine-client.c
@@ -87,7 +87,8 @@ JNIEXPORT jint JNICALL Java_org_xapek_andiodine_IodineClient_getDnsFd(
JNIEXPORT jint JNICALL Java_org_xapek_andiodine_IodineClient_connect(
JNIEnv *env, jclass klass, jstring j_nameserv_addr, jstring j_topdomain, jboolean j_raw_mode, jboolean j_lazy_mode,
- jstring j_password, jint j_request_hostname_size, jint j_response_fragment_size) {
+ jstring j_password, jint j_request_hostname_size, jint j_response_fragment_size,
+ jstring j_request_type) {
// XXX strdup leaks
const char *__p_nameserv_addr = (*env)->GetStringUTFChars(env,
@@ -105,12 +106,22 @@ JNIEXPORT jint JNICALL Java_org_xapek_andiodine_IodineClient_connect(
(*env)->ReleaseStringUTFChars(env, j_topdomain, __p_topdomain);
__android_log_print(ANDROID_LOG_ERROR, "iodine", "Topdomain from vm: %s", p_topdomain);
+ // extract password parameter
const char *p_password = (*env)->GetStringUTFChars(env, j_password, NULL);
char passwordField[33];
memset(passwordField, 0, 33);
strncpy(passwordField, p_password, 32);
(*env)->ReleaseStringUTFChars(env, j_password, p_password);
+ // extract request type parameter
+ const char *p_requestType = (*env)->GetStringUTFChars(env, j_request_type, NULL);
+ char requestTypeField[8];
+ memset(requestTypeField, 0, 8);
+ strncpy(requestTypeField, p_requestType, 7);
+ (*env)->ReleaseStringUTFChars(env, j_request_type, p_requestType);
+ __android_log_print(ANDROID_LOG_ERROR, "iodine", "Request Type from vm: %s", requestTypeField);
+
+
tun_config_android.request_disconnect = 0;
int selecttimeout = 2; // original: 4
@@ -140,6 +151,7 @@ JNIEXPORT jint JNICALL Java_org_xapek_andiodine_IodineClient_connect(
client_set_topdomain(p_topdomain);
client_set_hostname_maxlen(hostname_maxlen);
client_set_password(passwordField);
+ client_set_qtype(requestTypeField);
if ((dns_fd = open_dns_from_host(NULL, 0, AF_INET, AI_PASSIVE)) == -1) {
printf("Could not open dns socket: %s", strerror(errno));
diff --git a/jni/iodine/src/client.c b/jni/iodine/src/client.c
index 979f668..70ebe65 100644
--- a/jni/iodine/src/client.c
+++ b/jni/iodine/src/client.c
@@ -187,6 +187,9 @@ client_set_qtype(char *qtype)
do_qtype = T_SRV;
else if (!strcasecmp(qtype, "TXT"))
do_qtype = T_TXT;
+ // Added for Andiodine:
+ else
+ do_qtype = T_UNSET;
return (do_qtype == T_UNSET);
}