From 49c9c501aaa6c7b35fc90b028bc27073a280a5ad Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sat, 10 Dec 2022 01:15:50 +0300 Subject: [PATCH] android: Fix for AddressAlreadyInUse exception (#1534) * android: Fix for AddressAlreadyInUse exception * simplify loop Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- .../src/main/java/chat/simplex/app/SimplexApp.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt index 4f462256f5..0139143a58 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt @@ -11,8 +11,7 @@ import chat.simplex.app.views.onboarding.OnboardingStage import chat.simplex.app.views.usersettings.NotificationsMode import kotlinx.coroutines.* import kotlinx.serialization.decodeFromString -import java.io.BufferedReader -import java.io.InputStreamReader +import java.io.* import java.util.* import java.util.concurrent.Semaphore import java.util.concurrent.TimeUnit @@ -173,7 +172,18 @@ class SimplexApp: Application(), LifecycleEventObserver { val s = Semaphore(0) thread(name="stdout/stderr pipe") { Log.d(TAG, "starting server") - val server = LocalServerSocket(socketName) + var server: LocalServerSocket? = null + for (i in 0..100) { + try { + server = LocalServerSocket(socketName + i) + break + } catch (e: IOException) { + Log.e(TAG, e.stackTraceToString()) + } + } + if (server == null) { + throw Error("Unable to setup local server socket. Contact developers") + } Log.d(TAG, "started server") s.release() val receiver = server.accept()