Do not attach payloads to legacy encryption

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/generator/MessageGenerator.java | 15 
1 file changed, 9 insertions(+), 6 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/generator/MessageGenerator.java 🔗

@@ -32,7 +32,7 @@ public class MessageGenerator extends AbstractGenerator {
         super(service);
     }
 
-    private MessagePacket preparePacket(Message message) {
+    private MessagePacket preparePacket(Message message, boolean legacyEncryption) {
         Conversation conversation = (Conversation) message.getConversation();
         Account account = conversation.getAccount();
         MessagePacket packet = new MessagePacket();
@@ -63,8 +63,11 @@ public class MessageGenerator extends AbstractGenerator {
         if (message.edited()) {
             packet.addChild("replace", "urn:xmpp:message-correct:0").setAttribute("id", message.getEditedIdWireFormat());
         }
-        for (Element el : message.getPayloads()) {
-            packet.addChild(el);
+        if (!legacyEncryption) {
+            // Legacy encryption can't handle advanced payloads
+            for (Element el : message.getPayloads()) {
+                packet.addChild(el);
+            }
         }
         return packet;
     }
@@ -79,7 +82,7 @@ public class MessageGenerator extends AbstractGenerator {
     }
 
     public MessagePacket generateAxolotlChat(Message message, XmppAxolotlMessage axolotlMessage) {
-        MessagePacket packet = preparePacket(message);
+        MessagePacket packet = preparePacket(message, true);
         if (axolotlMessage == null) {
             return null;
         }
@@ -102,7 +105,7 @@ public class MessageGenerator extends AbstractGenerator {
     }
 
     public MessagePacket generateChat(Message message) {
-        MessagePacket packet = preparePacket(message);
+        MessagePacket packet = preparePacket(message, false);
         if (message.hasFileOnRemoteHost()) {
             final Message.FileParams fileParams = message.getFileParams();
 
@@ -128,7 +131,7 @@ public class MessageGenerator extends AbstractGenerator {
     }
 
     public MessagePacket generatePgpChat(Message message) {
-        MessagePacket packet = preparePacket(message);
+        MessagePacket packet = preparePacket(message, true);
         if (message.hasFileOnRemoteHost()) {
             Message.FileParams fileParams = message.getFileParams();
             final String url = fileParams.url;