use message id as session id in jingle file transfer

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/crypto/XmppDomainVerifier.java                |  1 
src/main/java/eu/siacs/conversations/xmpp/jingle/AbstractJingleConnection.java     | 26 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleFileTransferConnection.java |  1 
3 files changed, 10 insertions(+), 18 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/crypto/XmppDomainVerifier.java 🔗

@@ -26,7 +26,6 @@ import org.bouncycastle.asn1.DERIA5String;
 import org.bouncycastle.asn1.DERUTF8String;
 import org.bouncycastle.asn1.DLSequence;
 import org.bouncycastle.asn1.x500.RDN;
-import org.bouncycastle.asn1.x500.X500Name;
 import org.bouncycastle.asn1.x500.style.BCStyle;
 import org.bouncycastle.asn1.x500.style.IETFUtils;
 import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;

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

@@ -1,16 +1,13 @@
 package eu.siacs.conversations.xmpp.jingle;
 
 import android.util.Log;
-
 import androidx.annotation.NonNull;
-
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-
 import eu.siacs.conversations.Config;
 import eu.siacs.conversations.entities.Account;
 import eu.siacs.conversations.entities.Contact;
@@ -20,10 +17,8 @@ import eu.siacs.conversations.entities.ServiceDiscoveryResult;
 import eu.siacs.conversations.services.XmppConnectionService;
 import eu.siacs.conversations.xmpp.Jid;
 import eu.siacs.conversations.xmpp.jingle.stanzas.Reason;
-
 import im.conversations.android.xmpp.model.jingle.Jingle;
 import im.conversations.android.xmpp.model.stanza.Iq;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
@@ -187,8 +182,7 @@ public abstract class AbstractJingleConnection {
 
     abstract void deliverPacket(Iq jinglePacket);
 
-    protected void receiveOutOfOrderAction(
-            final Iq jinglePacket, final Jingle.Action action) {
+    protected void receiveOutOfOrderAction(final Iq jinglePacket, final Jingle.Action action) {
         Log.d(
                 Config.LOGTAG,
                 String.format(
@@ -198,7 +192,8 @@ public abstract class AbstractJingleConnection {
             Log.d(
                     Config.LOGTAG,
                     String.format(
-                            "%s: got a reason to terminate with out-of-order. but already in state %s",
+                            "%s: got a reason to terminate with out-of-order. but already in state"
+                                    + " %s",
                             id.account.getJid().asBareJid(), getState()));
             respondWithOutOfOrder(jinglePacket);
         } else {
@@ -267,10 +262,7 @@ public abstract class AbstractJingleConnection {
     }
 
     private void respondWithJingleError(
-            final Iq original,
-            String jingleCondition,
-            String condition,
-            String conditionType) {
+            final Iq original, String jingleCondition, String condition, String conditionType) {
         jingleConnectionManager.respondWithJingleError(
                 id.account, original, jingleCondition, condition, conditionType);
     }
@@ -371,15 +363,15 @@ public abstract class AbstractJingleConnection {
             return new Id(account, with, sessionId);
         }
 
-        public static Id of(Account account, Jid with) {
+        public static Id of(final Account account, final Jid with) {
             return new Id(account, with, JingleConnectionManager.nextRandomId());
         }
 
-        public static Id of(Message message) {
+        public static Id of(final Message message) {
             return new Id(
                     message.getConversation().getAccount(),
                     message.getCounterpart(),
-                    JingleConnectionManager.nextRandomId());
+                    message.getUuid());
         }
 
         public Contact getContact() {
@@ -430,8 +422,8 @@ public abstract class AbstractJingleConnection {
             case DECLINE, BUSY -> State.TERMINATED_DECLINED_OR_BUSY;
             case CANCEL, TIMEOUT -> State.TERMINATED_CANCEL_OR_TIMEOUT;
             case SECURITY_ERROR -> State.TERMINATED_SECURITY_ERROR;
-            case FAILED_APPLICATION, UNSUPPORTED_TRANSPORTS, UNSUPPORTED_APPLICATIONS -> State
-                    .TERMINATED_APPLICATION_FAILURE;
+            case FAILED_APPLICATION, UNSUPPORTED_TRANSPORTS, UNSUPPORTED_APPLICATIONS ->
+                    State.TERMINATED_APPLICATION_FAILURE;
             default -> State.TERMINATED_CONNECTIVITY_ERROR;
         };
     }

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

@@ -101,6 +101,7 @@ public class JingleFileTransferConnection extends AbstractJingleConnection
                 this.xmppConnectionService.findOrCreateConversation(
                         id.account, id.with.asBareJid(), false, false);
         this.message = new Message(conversation, "", Message.ENCRYPTION_NONE);
+        this.message.setRemoteMsgId(id.sessionId);
         this.message.setStatus(Message.STATUS_RECEIVED);
         this.message.setErrorMessage(null);
         this.message.setTransferable(this);