Solves race conditions when connecting to relays.

This commit is contained in:
Vitor Pamplona
2024-06-01 15:16:18 -04:00
parent bf71365f51
commit 2326e66382
@@ -116,7 +116,7 @@ class Relay(
private var connectingBlock = AtomicBoolean() private var connectingBlock = AtomicBoolean()
fun connectAndRun(onConnected: (Relay) -> Unit) { fun connectAndRun(onConnected: (Relay) -> Unit) {
Log.d("Relay", "Relay.connect $url hasProxy: ${this.httpClient.proxy != null}") Log.d("Relay", "Relay.connect $url connecting: ${connectingBlock.get()} hasProxy: ${this.httpClient.proxy != null}")
// BRB is crashing OkHttp Deflater object :( // BRB is crashing OkHttp Deflater object :(
if (url.contains("brb.io")) return if (url.contains("brb.io")) return
@@ -125,13 +125,16 @@ class Relay(
return return
} }
checkNotInMainThread()
if (socket != null) return
lastConnectTentative = TimeUtils.now()
try { try {
checkNotInMainThread()
if (socket != null) {
connectingBlock.set(false)
return
}
lastConnectTentative = TimeUtils.now()
val request = val request =
Request.Builder() Request.Builder()
.header("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") .header("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}")