getMedia() would throw null pointer when called after going from proposed to some error state

Daniel Gultsch created

Change summary

build.gradle                                                              | 4 
src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java           | 1 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java | 9 
3 files changed, 9 insertions(+), 5 deletions(-)

Detailed changes

build.gradle 🔗

@@ -92,8 +92,8 @@ android {
     defaultConfig {
         minSdkVersion 16
         targetSdkVersion 28
-        versionCode 369
-        versionName "2.8.0-alpha.3"
+        versionCode 370
+        versionName "2.8.0-alpha.4"
         archivesBaseName += "-$versionName"
         applicationId "eu.siacs.conversations"
         resValue "string", "applicationId", applicationId

src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java 🔗

@@ -659,7 +659,6 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
         final AbstractJingleConnection.Id id = requireRtpConnection().getId();
         if (account == id.account && id.with.equals(with) && id.sessionId.equals(sessionId)) {
             if (state == RtpEndUserState.ENDED) {
-                resetIntent(account, with, state, requireRtpConnection().getMedia());
                 finish();
                 return;
             } else if (END_CARD.contains(state)) {

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

@@ -756,9 +756,14 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
             throw new IllegalStateException("RTP connection has not been initialized yet");
         }
         if (isInState(State.PROPOSED, State.PROCEED)) {
-            return Preconditions.checkNotNull(this.proposedMedia, "RTP connection has not been  initialized properly");
+            return Preconditions.checkNotNull(this.proposedMedia, "RTP connection has not been initialized properly");
+        }
+        final RtpContentMap initiatorContentMap = initiatorRtpContentMap;
+        if (initiatorContentMap != null) {
+            return initiatorContentMap.getMedia();
+        } else {
+            return Preconditions.checkNotNull(this.proposedMedia, "RTP connection has not been initialized properly");
         }
-        return Preconditions.checkNotNull(initiatorRtpContentMap.getMedia());
     }