diff --git a/app/src/main/java/com/rosetta/messenger/network/CallManager.kt b/app/src/main/java/com/rosetta/messenger/network/CallManager.kt index 41dded5..04f7561 100644 --- a/app/src/main/java/com/rosetta/messenger/network/CallManager.kt +++ b/app/src/main/java/com/rosetta/messenger/network/CallManager.kt @@ -871,7 +871,11 @@ object CallManager { runCatching { localAudioTrack?.setEnabled(false) } runCatching { localAudioTrack?.dispose() } runCatching { audioSource?.dispose() } + // close() stops media but does NOT release native resources (ICE agent, + // ports, OWTF threads). Without dispose() the old PC keeps ports bound + // for ~30 s, blocking the next call from connecting. runCatching { peerConnection?.close() } + runCatching { peerConnection?.dispose() } localAudioTrack = null audioSource = null peerConnection = null