aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends/android/jni/libandroidbridge/charonservice.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontends/android/jni/libandroidbridge/charonservice.c')
-rw-r--r--src/frontends/android/jni/libandroidbridge/charonservice.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/frontends/android/jni/libandroidbridge/charonservice.c b/src/frontends/android/jni/libandroidbridge/charonservice.c
index ecc243481..424d50d24 100644
--- a/src/frontends/android/jni/libandroidbridge/charonservice.c
+++ b/src/frontends/android/jni/libandroidbridge/charonservice.c
@@ -18,6 +18,7 @@
#include <jni.h>
#include <hydra.h>
+#include <ipsec.h>
#include <daemon.h>
#include <library.h>
@@ -88,10 +89,19 @@ JNI_METHOD(CharonVpnService, initializeCharon, void)
return;
}
+ if (!libipsec_init())
+ {
+ libipsec_deinit();
+ libhydra_deinit();
+ library_deinit();
+ return;
+ }
+
if (!libcharon_init("charon") ||
!charon->initialize(charon, PLUGINS))
{
libcharon_deinit();
+ libipsec_deinit();
libhydra_deinit();
library_deinit();
return;
@@ -107,6 +117,7 @@ JNI_METHOD(CharonVpnService, initializeCharon, void)
JNI_METHOD(CharonVpnService, deinitializeCharon, void)
{
libcharon_deinit();
+ libipsec_deinit();
libhydra_deinit();
library_deinit();
}