From f3695d089b22833c8287bf63f4a8ce336ba5569a Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 31 Mar 2020 14:56:38 +0200 Subject: [PATCH] android: Change how initial log handler is registered Previously, if the two utility functions were called while the VPN connection was established (i.e. charon was initialized) the logger for libstrongswan would get reset to the initial log handler. So certain log messages would not get logged to the log file after the TUN device was created (one of the helpers is used to convert IPs there). --- .../src/main/jni/libandroidbridge/charonservice.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c b/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c index 5a3435a11c..d0f1d35ab3 100644 --- a/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c +++ b/src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c @@ -620,6 +620,14 @@ static void segv_handler(int signal) exit(1); } +/** + * Register this logger as default before we have the bus available + */ +static void __attribute__ ((constructor))register_logger() +{ + dbg = dbg_android; +} + /** * Initialize charon and the libraries via JNI */ @@ -630,9 +638,6 @@ JNI_METHOD(CharonVpnService, initializeCharon, jboolean, struct utsname utsname; char *logfile, *appdir, *plugins; - /* logging for library during initialization, as we have no bus yet */ - dbg = dbg_android; - /* initialize library */ if (!library_init(NULL, "charon")) { @@ -750,8 +755,6 @@ JNI_METHOD_P(org_strongswan_android_utils, Utils, isProposalValid, jboolean, char *str; bool valid; - dbg = dbg_android; - if (!library_init(NULL, "charon")) { library_deinit(); @@ -776,8 +779,6 @@ JNI_METHOD_P(org_strongswan_android_utils, Utils, parseInetAddressBytes, jbyteAr host_t *host; char *str; - dbg = dbg_android; - if (!library_init(NULL, "charon")) { library_deinit(); -- 2.39.2