From 7beb722c6501dca413b6503526f00971f61e5674 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Wed, 1 Apr 2026 17:42:25 +0500 Subject: [PATCH] fix: dispose PeerConnection on call end to release ICE ports close() alone does not free native WebRTC resources (ICE agent, ports, threads). Without dispose() the old PC holds ports for ~30s, blocking the next call from connecting. --- .../main/java/com/rosetta/messenger/network/CallManager.kt | 4 ++++ 1 file changed, 4 insertions(+) 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