From b434c5d25bfec25d4906de37575d39c7e72c51a4 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 2 Oct 2023 13:54:36 +0200 Subject: [PATCH] hold back candidates until after content-add --- .../siacs/conversations/xmpp/jingle/JingleRtpConnection.java | 3 ++- .../java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java index 8296b12a69d604e408dc738b52fff9afb1208fb1..d435dfc2ab17aeea9eed9fb2b58d8297522fe4ab 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java @@ -738,6 +738,7 @@ public class JingleRtpConnection extends AbstractJingleConnection + ContentAddition.summary(contentAcceptMap)); modifyLocalContentMap(rtpContentMap); sendContentAccept(contentAcceptMap); + this.webRTCWrapper.setIsReadyToReceiveIceCandidates(true); } catch (final Exception e) { Log.d(Config.LOGTAG, "unable to accept content add", Throwables.getRootCause(e)); webRTCWrapper.close(); @@ -871,7 +872,6 @@ public class JingleRtpConnection extends AbstractJingleConnection webRTCWrapper.setRemoteDescription(sdp).get(); setRemoteContentMap(restartContentMap); if (isOffer) { - webRTCWrapper.setIsReadyToReceiveIceCandidates(false); final SessionDescription localSessionDescription = setLocalSessionDescription(); setLocalContentMap(RtpContentMap.of(localSessionDescription, isInitiator())); // We need to respond OK before sending any candidates @@ -2479,6 +2479,7 @@ public class JingleRtpConnection extends AbstractJingleConnection handleIqTimeoutResponse(response); } }); + this.webRTCWrapper.setIsReadyToReceiveIceCandidates(true); } private void setLocalContentMap(final RtpContentMap rtpContentMap) { diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java index 4e3675c848ad0d94230e0f3134d44cf727739edd..f252fc8acb95c5827141eef02f02f2488c98fc08 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java @@ -596,6 +596,7 @@ public class WebRTCWrapper { } synchronized ListenableFuture setLocalDescription() { + this.setIsReadyToReceiveIceCandidates(false); return Futures.transformAsync( getPeerConnectionFuture(), peerConnection -> {