Parcourir la source

Remove sessions earlier...

before publishing the new bundle and device.

To avoid a potential race condition where the user sends a message
before the sessions have been removed.
JC Brand il y a 1 mois
Parent
commit
0b0a2c47ad
1 fichiers modifiés avec 6 ajouts et 9 suppressions
  1. 6 9
      src/headless/plugins/omemo/api.js

+ 6 - 9
src/headless/plugins/omemo/api.js

@@ -83,20 +83,17 @@ export default {
                     }
                     devicelist.devices.trigger('remove');
                 }
+
                 // Generate new device bundle and publish
-                // https://xmpp.org/extensions/attic/xep-0384-0.3.0.html#usecases-announcing
+                // We'll need to create new sessions (i.e. send out new PreKeyWhisperMessage) when sending messages
+                // See: https://xmpp.org/extensions/attic/xep-0384-0.3.0.html#usecases-announcing
                 await omemo_store.generateBundle();
-                const device = devicelist.devices.get(omemo_store.get('device_id'));
-                const fp = generateFingerprint(device);
+                await omemo_store.removeAllSessions();
                 await omemo_store.publishBundle();
                 await devicelist.publishDevices();
 
-                // Remove all existing sessions.
-                // We'll need to create new sessions (i.e. send out a new PreKeyWhisperMessage)
-                // when sending messages.
-                await omemo_store.removeAllSessions();
-
-                return fp;
+                const device = devicelist.devices.get(omemo_store.get('device_id'));
+                return generateFingerprint(device);
             },
         },
     },