fix: call nativeSignalConnect from 8MB Java Thread, not Dispatchers.IO
Some checks failed
Mirror to GitHub / mirror (push) Failing after 39s
Build Release Binaries / build-amd64 (push) Failing after 3m54s

This commit is contained in:
Siavash Sameni
2026-04-09 09:50:30 +04:00
parent 76e9fe5e43
commit a3f54566d4

View File

@@ -172,22 +172,26 @@ class CallViewModel : ViewModel(), WzpCallback {
val seed = _seedHex.value val seed = _seedHex.value
val resolvedRelay = resolveToIp(relay) ?: relay val resolvedRelay = resolveToIp(relay) ?: relay
// nativeSignalConnect blocks up to 10s (waits for QUIC connect + register). // nativeSignalConnect has JNI overhead — must be on a thread with enough stack.
// Internal thread does the actual work; we just wait for the result. // Dispatchers.IO threads overflow. Use explicit Java Thread.
viewModelScope.launch(kotlinx.coroutines.Dispatchers.IO) { Thread(null, {
try { try {
val mgr = com.wzp.engine.SignalManager() val mgr = com.wzp.engine.SignalManager()
val ok = mgr.connect(resolvedRelay, seed) val ok = mgr.connect(resolvedRelay, seed)
if (ok) { viewModelScope.launch {
signalManager = mgr if (ok) {
startSignalPolling() signalManager = mgr
} else { startSignalPolling()
_errorMessage.value = "Failed to register on relay" } else {
_errorMessage.value = "Failed to register on relay"
}
} }
} catch (e: Exception) { } catch (e: Exception) {
_errorMessage.value = "Register error: ${e.message}" viewModelScope.launch {
_errorMessage.value = "Register error: ${e.message}"
}
} }
} }, "wzp-signal-init", 8 * 1024 * 1024).start()
} }
/** Poll signal manager state every 500ms */ /** Poll signal manager state every 500ms */