do not throw when finishing jingle ft twice. fixes #3765

Daniel Gultsch created

the state machine in jingle file transfer does not prevent that the connection
is being finished twice

Change summary

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java | 4 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java     | 2 
2 files changed, 5 insertions(+), 1 deletion(-)

Detailed changes

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

@@ -447,6 +447,10 @@ public class JingleConnectionManager extends AbstractConnectionManager {
     }
 
     void finishConnection(final AbstractJingleConnection connection) {
+        this.connections.remove(connection.getId());
+    }
+
+    void finishConnectionOrThrow(final AbstractJingleConnection connection) {
         final AbstractJingleConnection.Id id = connection.getId();
         if (this.connections.remove(id) == null) {
             throw new IllegalStateException(String.format("Unable to finish connection with id=%s", id.toString()));

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

@@ -1189,7 +1189,7 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web
         if (isTerminated()) {
             this.cancelRingingTimeout();
             this.webRTCWrapper.verifyClosed();
-            this.jingleConnectionManager.finishConnection(this);
+            this.jingleConnectionManager.finishConnectionOrThrow(this);
         } else {
             throw new IllegalStateException(String.format("Unable to call finish from %s", this.state));
         }