diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/DiagLog.kt b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/DiagLog.kt index badf750de..fee05d81a 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/DiagLog.kt +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/DiagLog.kt @@ -62,9 +62,10 @@ object DiagLog val base = dir ?: return try { - val line = "${format.format(Date())} $tag: $message\n" synchronized(this) { + /* SimpleDateFormat is not thread-safe: format under the lock */ + val line = "${format.format(Date())} $tag: $message\n" if (written > MAX_SIZE) { rotate(base) @@ -79,7 +80,7 @@ object DiagLog } w.write(line) w.flush() - written += line.length + 1 + written += line.toByteArray(Charsets.UTF_8).size } } catch (_: Exception) diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/autoconnect/AutoConnectManager.kt b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/autoconnect/AutoConnectManager.kt index 04ef583d2..80cf0473a 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/autoconnect/AutoConnectManager.kt +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/autoconnect/AutoConnectManager.kt @@ -145,6 +145,9 @@ class AutoConnectManager private constructor( return } handler.removeCallbacksAndMessages(null) + /* the runnable that clears this flag was just removed with the + * callbacks: clear it here or every later connect is swallowed */ + pendingEvaluate.set(false) service?.unregisterListener(this) try {