Race condition guard for mute

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java | 10 
1 file changed, 8 insertions(+), 2 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java 🔗

@@ -549,8 +549,14 @@ public class WebRTCWrapper {
     }
 
     boolean setMicrophoneEnabled(final boolean enabled) {
-        final Optional<AudioTrack> audioTrack =
-                TrackWrapper.get(peerConnection, this.localAudioTrack);
+        Optional<AudioTrack> audioTrack = null;
+        try {
+            audioTrack = TrackWrapper.get(peerConnection, this.localAudioTrack);
+        } catch (final IllegalStateException e) {
+            Log.d(Config.LOGTAG, "unable to toggle microphone", e);
+            // ignoring race condition in case sender has been disposed
+            return false;
+        }
         if (audioTrack.isPresent()) {
             try {
                 audioTrack.get().setEnabled(enabled);