From ed6e101c3993a0cf5558f787c96ac4cb5cad04ee Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Mar 2026 13:15:55 +0100 Subject: [PATCH 01/18] feat: dispose frame cryptors on closing JanusConnection --- .../java/privmx_endpoint/modules/stream/JanusConnection.java | 1 + 1 file changed, 1 insertion(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java index 96b438f7..e1b2be0a 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java @@ -118,6 +118,7 @@ public boolean isEnded(){ public void close(){ if(peerConnection.connectionState() != PeerConnection.PeerConnectionState.CLOSED) { peerConnection.dispose(); + pcObserver.frameCryptorMap.forEach((k,v) -> v.dispose()); } } } \ No newline at end of file From 7d14373d4b1aaea812dae06ccfbcf2cb4a2ead5d Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Mar 2026 13:16:48 +0100 Subject: [PATCH 02/18] feat: dispose video capturers when closing JanusPublisher --- .../java/privmx_endpoint/modules/stream/JanusPublisher.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java index e70a33de..4001a30e 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java @@ -130,6 +130,8 @@ public void close() { super.close(); audioTracks.clear(); videoTracks.clear(); + + videoCapturers.forEach((k, v) -> v.dispose()); videoCapturers.clear(); } From 8108bb78c0f9e1b130db4f187c4ed7c6436a4c3e Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Mar 2026 13:17:55 +0100 Subject: [PATCH 03/18] feat: close session before removing it --- .../modules/stream/PeerConnectionManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index 26257fb0..529a9794 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -55,7 +55,11 @@ public void createHandleToRoom( } public void leaveStreamRoom(@NonNull String streamRoomId) { - sessions.remove(streamRoomId); + RoomJanusSession session = sessions.getOrDefault(streamRoomId, null); + if (session != null) { + session.close(); + sessions.remove(streamRoomId); + } } } From 544265047c16e5a401c3abbf9d8fb46a6c65ffe4 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Mar 2026 13:18:34 +0100 Subject: [PATCH 04/18] feat: add close method to PeerConnectionManager --- .../modules/stream/PeerConnectionManager.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index 529a9794..8f727c28 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -61,5 +61,15 @@ public void leaveStreamRoom(@NonNull String streamRoomId) { sessions.remove(streamRoomId); } } + + public void close() { + try { + sessions.forEach((roomId, session) -> session.close()); + sessions.clear(); + sessionHandles.clear(); + } catch (Exception ignored) {} + + pcFactory.dispose(); + } } From ed5cf8b7cf37459f8cc0214fdb4bf757055193cf Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Mar 2026 13:19:52 +0100 Subject: [PATCH 05/18] feat: add close method to RoomJanusSession --- .../privmx_endpoint/modules/stream/RoomJanusSession.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java index 1e98131b..c590a752 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java @@ -110,6 +110,14 @@ public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions option } } + public void close(){ + if (publisher != null) publisher.close(); + if (subscriber != null) subscriber.close(); + + // todo - to use this update aar is required + // keyStore.release(); + } + public class WebRTCImpl implements WebRTCInterface { private final ExecutorService executor = Executors.newSingleThreadExecutor(); From 4c52d54a505980a7d41f24743d3d9caf5f4c4d82 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 11 Mar 2026 13:20:06 +0100 Subject: [PATCH 06/18] feat: add close method to StreamApi --- .../java/privmx_endpoint/modules/stream/StreamApi.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 956fca55..0a8b4f58 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -364,4 +364,9 @@ public String buildSubscriptionQuery( selectorId ); } + + public void close() throws Exception { + pcManager.close(); + api.close(); + } } From 6b4b2f32640a093e1e840668f7a70ca512800fc2 Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 13 Mar 2026 11:30:39 +0100 Subject: [PATCH 07/18] feat: remove redundant closing publisher and subscriber from RoomJanusSession closing method --- .../java/privmx_endpoint/modules/stream/RoomJanusSession.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java index c590a752..00429339 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java @@ -111,9 +111,6 @@ public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions option } public void close(){ - if (publisher != null) publisher.close(); - if (subscriber != null) subscriber.close(); - // todo - to use this update aar is required // keyStore.release(); } From 4586771739c45d594a0805e8d67de370e69177ee Mon Sep 17 00:00:00 2001 From: Doominika Date: Fri, 13 Mar 2026 13:03:27 +0100 Subject: [PATCH 08/18] feat: close publishers frame cryptors --- .../modules/stream/JanusPublisher.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java index 4001a30e..d2f61c85 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java @@ -90,7 +90,11 @@ public void removeAudioTrack(String id) { AudioTrackInfo audioTrackInfo = audioTracks.get(id); if (audioTrackInfo == null) return; peerConnection.removeTrack(audioTrackInfo.sender); - audioTracks.remove(id); + + AudioTrackInfo removedAudioTrackInfo = audioTracks.remove(id); + if (removedAudioTrackInfo != null) { + removedAudioTrackInfo.frameCryptor.dispose(); + } } } @@ -99,8 +103,12 @@ public void removeVideoTrack(String id) { VideoTrackInfo videoTrackInfo = videoTracks.get(id); if (videoTrackInfo == null) return; peerConnection.removeTrack(videoTrackInfo.sender); - videoTracks.remove(id); videoCapturers.remove(id); + + VideoTrackInfo removedVideoTrackInfo = videoTracks.remove(id); + if (removedVideoTrackInfo != null) { + removedVideoTrackInfo.frameCryptor.dispose(); + } } } From 1a1b31ed5d450b30abb4a95e1dc7f98a81e0c502 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 11:47:53 +0100 Subject: [PATCH 09/18] feat: update JanusPublisher close method --- .../java/privmx_endpoint/modules/stream/JanusPublisher.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java index d2f61c85..cdcfcf09 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusPublisher.java @@ -135,12 +135,16 @@ public VideoCapturer getVideoCapturer(String trackId){ @Override public void close() { - super.close(); + try { + audioTracks.values().forEach(track -> track.frameCryptor.dispose()); + videoTracks.values().forEach(track -> track.frameCryptor.dispose()); + } catch (IllegalStateException ignored) {} audioTracks.clear(); videoTracks.clear(); videoCapturers.forEach((k, v) -> v.dispose()); videoCapturers.clear(); + super.close(); } @Override From 1228e1f34382d6fbe002f0edad148bb58229bd38 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 11:54:59 +0100 Subject: [PATCH 10/18] feat: update PcObserver by adding dispose method --- .../modules/stream/PcObserver.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PcObserver.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PcObserver.java index ce31494d..2750823c 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PcObserver.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PcObserver.java @@ -124,10 +124,31 @@ public void onAddTrack(RtpReceiver receiver, MediaStream[] mediaStreams) { } } + public void dispose() { + frameCryptorMap.forEach((id, cryptor) -> { + if (cryptor != null) cryptor.dispose(); + }); + frameCryptorMap.clear(); + + onAddTrack = null; + onVideoTrack = null; + onIceCandidate = null; + } + @Override public void onRemoveTrack(RtpReceiver receiver) { //TODO: cleanup track cryptors (?) // onRemoveTrack.accept(receiver.track()); + MediaStreamTrack track = receiver.track(); + if (track != null) { + String trackId = track.id(); + if (trackId != null) { + PmxFrameCryptor cryptor = frameCryptorMap.remove(trackId); + if (cryptor != null) cryptor.dispose(); + + streamIdsByTracks.remove(trackId); + } + } receiver.dispose(); } From dbf84ee7b736616429fdfb86a1b68590d916d61d Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 11:56:02 +0100 Subject: [PATCH 11/18] feat: update JanusConnection close method --- .../privmx_endpoint/modules/stream/JanusConnection.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java index e1b2be0a..d80d5841 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/JanusConnection.java @@ -115,10 +115,10 @@ public boolean isEnded(){ peerConnection.connectionState() == PeerConnection.PeerConnectionState.FAILED; } - public void close(){ - if(peerConnection.connectionState() != PeerConnection.PeerConnectionState.CLOSED) { + public void close() { + if (peerConnection.connectionState() != PeerConnection.PeerConnectionState.CLOSED) { peerConnection.dispose(); - pcObserver.frameCryptorMap.forEach((k,v) -> v.dispose()); + pcObserver.dispose(); } } } \ No newline at end of file From 91b40bf908ebcb73f1150b63ec01c0e2e9acbf3c Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 11:59:13 +0100 Subject: [PATCH 12/18] feat: make PeerConnectionManager autoCloseable --- .../modules/stream/PeerConnectionManager.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index 8f727c28..f7844978 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -12,9 +12,8 @@ import java.util.Objects; import java.util.Optional; import java.util.function.BiConsumer; -import java.util.function.Function; -class PeerConnectionManager { +class PeerConnectionManager implements AutoCloseable { private final Map sessions = new HashMap<>(); private final Map sessionHandles = new HashMap<>(); protected final PeerConnectionFactory pcFactory; @@ -55,20 +54,17 @@ public void createHandleToRoom( } public void leaveStreamRoom(@NonNull String streamRoomId) { - RoomJanusSession session = sessions.getOrDefault(streamRoomId, null); + RoomJanusSession session = sessions.remove(streamRoomId); if (session != null) { session.close(); - sessions.remove(streamRoomId); } } - public void close() { - try { - sessions.forEach((roomId, session) -> session.close()); - sessions.clear(); - sessionHandles.clear(); - } catch (Exception ignored) {} - + @Override + public void close() throws Exception { + sessions.values().forEach(RoomJanusSession::close); + sessions.clear(); + sessionHandles.clear(); pcFactory.dispose(); } } From 2b2079ae1f6a5ab325273bf551f3968308750907 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 12:00:01 +0100 Subject: [PATCH 13/18] feat: make StreamApi autoCloseable --- .../java/privmx_endpoint/modules/stream/StreamApi.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 0a8b4f58..d1241f0f 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -31,13 +31,11 @@ import org.webrtc.audio.AudioDeviceModule; import org.webrtc.audio.JavaAudioDeviceModule; -import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; //TODO: Good to remove context from StreamApi -public class StreamApi { +public class StreamApi implements AutoCloseable{ public static final String VIDEO_TRACK_ID = "ARDAMSv0"; public static final String AUDIO_TRACK_ID = "ARDAMSa0"; public static final String VIDEO_TRACK_TYPE = "video"; @@ -365,6 +363,7 @@ public String buildSubscriptionQuery( ); } + @Override public void close() throws Exception { pcManager.close(); api.close(); From 19505c06ffa945dc97a3aa1f4bd8eff8ac1ea3ee Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 12:02:47 +0100 Subject: [PATCH 14/18] feat: remove redundant closing method from RoomJanusSession --- .../privmx_endpoint/modules/stream/RoomJanusSession.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java index 00429339..1e98131b 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/RoomJanusSession.java @@ -110,11 +110,6 @@ public void setFrameCryptorOptions(PmxFrameCryptor.PmxFrameCryptorOptions option } } - public void close(){ - // todo - to use this update aar is required - // keyStore.release(); - } - public class WebRTCImpl implements WebRTCInterface { private final ExecutorService executor = Executors.newSingleThreadExecutor(); From ee87cb20f85fc3acf6c7a3eaf7ad6d5bd51ce8a1 Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 12:06:07 +0100 Subject: [PATCH 15/18] feat: update after removing closing method from RoomJanusSession --- .../modules/stream/PeerConnectionManager.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index f7844978..63eec737 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -54,15 +54,11 @@ public void createHandleToRoom( } public void leaveStreamRoom(@NonNull String streamRoomId) { - RoomJanusSession session = sessions.remove(streamRoomId); - if (session != null) { - session.close(); - } + sessions.remove(streamRoomId); } @Override public void close() throws Exception { - sessions.values().forEach(RoomJanusSession::close); sessions.clear(); sessionHandles.clear(); pcFactory.dispose(); From 73dd0c4e8bb3fb7f21fc03b814352b5b280979ca Mon Sep 17 00:00:00 2001 From: Doominika Date: Tue, 17 Mar 2026 13:41:20 +0100 Subject: [PATCH 16/18] feat: add import --- .../simplito/java/privmx_endpoint/modules/stream/StreamApi.java | 1 + 1 file changed, 1 insertion(+) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 00daa01f..91204921 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.Objects; import java.util.function.Consumer; +import java.util.stream.Collectors; public class StreamApi implements AutoCloseable{ private final StreamApiLow api; From 7e3a2d9e73532149b7f0542bab65287399705c64 Mon Sep 17 00:00:00 2001 From: Doominika Date: Wed, 18 Mar 2026 13:33:12 +0100 Subject: [PATCH 17/18] feat: leave stream rooms when closing streamApi --- .../modules/stream/PeerConnectionManager.java | 9 +++++---- .../java/privmx_endpoint/modules/stream/StreamApi.java | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java index 11f17e12..b9cb0e98 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/PeerConnectionManager.java @@ -6,14 +6,13 @@ import com.simplito.java.privmx_endpoint.model.stream.StreamHandle; import com.simplito.java.privmx_endpoint.model.stream.SdpWithTypeModel; -import org.webrtc.PeerConnection; import org.webrtc.PeerConnectionFactory; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.function.BiConsumer; class PeerConnectionManager implements AutoCloseable { @@ -45,7 +44,6 @@ public RoomJanusSession getSession(@NonNull String streamRoomId) { return sessions.get(streamRoomId); } - @Nullable public RoomJanusSession getSession(@NonNull StreamHandle handle) { String streamRoomId = sessionHandles.get(handle.getValue()); @@ -63,9 +61,12 @@ public void leaveStreamRoom(@NonNull String streamRoomId) { sessions.remove(streamRoomId); } + public Set getRoomIds(){ + return sessions.keySet(); + } + @Override public void close() throws Exception { - sessions.clear(); sessionHandles.clear(); pcFactory.dispose(); } diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index 91204921..be5013ed 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -389,6 +389,7 @@ public String buildSubscriptionQuery( @Override public void close() throws Exception { + pcManager.getRoomIds().forEach(api::leaveStreamRoom); pcManager.close(); api.close(); } From 9a1e35009d50e82d0d6bc40782084a8e83963ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominika=20=C5=9Alu=C5=BCy=C5=84ska?= <101605588+Doominika@users.noreply.github.com> Date: Thu, 19 Mar 2026 14:51:24 +0100 Subject: [PATCH 18/18] Update privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java Co-authored-by: djenczewski <149203207+djenczewski@users.noreply.github.com> --- .../simplito/java/privmx_endpoint/modules/stream/StreamApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java index be5013ed..a403ee95 100644 --- a/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java +++ b/privmx-endpoint-streams/android/src/main/java/com/simplito/java/privmx_endpoint/modules/stream/StreamApi.java @@ -389,7 +389,7 @@ public String buildSubscriptionQuery( @Override public void close() throws Exception { - pcManager.getRoomIds().forEach(api::leaveStreamRoom); + pcManager.getRoomIds().forEach(this::leaveStreamRoom); pcManager.close(); api.close(); }