catch establishing call when last call is shutting down

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/services/CallIntegrationConnectionService.java | 15 
1 file changed, 12 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/services/CallIntegrationConnectionService.java 🔗

@@ -35,6 +35,7 @@ import eu.siacs.conversations.entities.Contact;
 import eu.siacs.conversations.ui.RtpSessionActivity;
 import eu.siacs.conversations.xmpp.Jid;
 import eu.siacs.conversations.xmpp.jingle.AbstractJingleConnection;
+import eu.siacs.conversations.xmpp.jingle.JingleConnectionManager;
 import eu.siacs.conversations.xmpp.jingle.JingleRtpConnection;
 import eu.siacs.conversations.xmpp.jingle.Media;
 import eu.siacs.conversations.xmpp.jingle.RtpEndUserState;
@@ -125,9 +126,17 @@ public class CallIntegrationConnectionService extends ConnectionService {
                 // actually attempted
                 // sendJingleFinishMessage(service, contact, Reason.CONNECTIVITY_ERROR);
             } else {
-                final var proposal =
-                        service.getJingleConnectionManager()
-                                .proposeJingleRtpSession(account, with, media);
+                final JingleConnectionManager.RtpSessionProposal proposal;
+                try {
+                    proposal =
+                            service.getJingleConnectionManager()
+                                    .proposeJingleRtpSession(account, with, media);
+                } catch (final IllegalStateException e) {
+                    return Connection.createFailedConnection(
+                            new DisconnectCause(
+                                    DisconnectCause.ERROR,
+                                    "Phone is busy. Probably race condition. Try again in a moment"));
+                }
                 if (proposal == null) {
                     // TODO instead of just null checking try to get the sessionID
                     return Connection.createFailedConnection(