From ef0f0cc839929bc8a833ad702d85c39fd3e93f5d Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Fri, 29 Jun 2018 11:41:41 +0200 Subject: [PATCH] android: Don't use infinite keying tries on Android 5+ This way we get some feedback about the issue in the GUI (otherwise it would just switch to connecting state) and also some delays between retries. --- .../android/app/src/main/jni/libandroidbridge/android_jni.h | 1 + .../src/main/jni/libandroidbridge/backend/android_service.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/frontends/android/app/src/main/jni/libandroidbridge/android_jni.h b/src/frontends/android/app/src/main/jni/libandroidbridge/android_jni.h index aab12c412..918c14c5e 100644 --- a/src/frontends/android/app/src/main/jni/libandroidbridge/android_jni.h +++ b/src/frontends/android/app/src/main/jni/libandroidbridge/android_jni.h @@ -57,6 +57,7 @@ typedef enum { ANDROID_JELLY_BEAN = 16, ANDROID_JELLY_BEAN_MR1 = 17, ANDROID_JELLY_BEAN_MR2 = 18, + ANDROID_LOLLIPOP = 21, } android_sdk_version_t; /** diff --git a/src/frontends/android/app/src/main/jni/libandroidbridge/backend/android_service.c b/src/frontends/android/app/src/main/jni/libandroidbridge/backend/android_service.c index 599f61852..a1a51b7b5 100644 --- a/src/frontends/android/app/src/main/jni/libandroidbridge/backend/android_service.c +++ b/src/frontends/android/app/src/main/jni/libandroidbridge/backend/android_service.c @@ -18,6 +18,7 @@ #include #include +#include "android_jni.h" #include "android_service.h" #include "android_dns_proxy.h" #include "../charonservice.h" @@ -761,6 +762,11 @@ static job_requeue_t initiate(private_android_service_t *this) int port; bool certreq; + if (android_sdk_version >= ANDROID_LOLLIPOP) + { /* only try once and notify the GUI on Android 5+ where we have a blocking TUN device */ + peer.keyingtries = 1; + } + server = this->settings->get_str(this->settings, "connection.server", NULL); port = this->settings->get_int(this->settings, "connection.port", IKEV2_UDP_PORT);