about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authornandesu-utils <70854931+nandesu-utils@users.noreply.github.com>2021-10-29 01:15:55 +0900
committernandesu-utils <70854931+nandesu-utils@users.noreply.github.com>2021-10-29 01:27:38 +0900
commitfee23b55f08c3635731aa625e31bd54f14282cb6 (patch)
tree8438b8878036ab59d87f565d31d0c5e2ddd37732
parent17d62921e9d2cfa8ade544c64a69d14d8ea66377 (diff)
downloadprofani-tty-fee23b55f08c3635731aa625e31bd54f14282cb6.tar.gz
Refined sender device acquirement
Now the sender devices are acknowledged only after omemo is loaded. That
is, after key generation has been completed or identity has been loaded.
-rw-r--r--src/omemo/omemo.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c
index 273bbd21..4d53ad0c 100644
--- a/src/omemo/omemo.c
+++ b/src/omemo/omemo.c
@@ -84,7 +84,7 @@ static unsigned char* _omemo_fingerprint_decode(const char* const fingerprint, s
 static char* _omemo_unformat_fingerprint(const char* const fingerprint_formatted);
 static void _cache_device_identity(const char* const jid, uint32_t device_id, ec_public_key* identity);
 static void _g_hash_table_free(GHashTable* hash_table);
-static void _omemo_sender_devices(void);
+static void _acquire_sender_devices_list(void);
 
 typedef gboolean (*OmemoDeviceListHandler)(const char* const jid, GList* device_list);
 
@@ -304,9 +304,6 @@ omemo_on_connect(ProfAccount* account)
         log_warning("[OMEMO] no such file: %s", omemo_ctx.trust_filename->str);
         g_error_free(error);
     }
-
-    log_debug("[OMEMO] Acquiring sender devices for current account");
-    _omemo_sender_devices();
 }
 
 void
@@ -391,7 +388,7 @@ omemo_publish_crypto_materials(void)
     omemo_bundle_publish(true);
 }
 
-static void _omemo_sender_devices(void) {
+static void _acquire_sender_devices_list(void) {
     char* barejid = connection_get_barejid();
 
     g_hash_table_insert(omemo_ctx.device_list_handler, strdup(barejid), _handle_own_device_list);
@@ -403,6 +400,11 @@ static void _omemo_sender_devices(void) {
 void
 omemo_start_sessions(void)
 {
+    // before any session may be started, a list on
+    // available sender devices must be acquired
+    log_debug("[OMEMO] Acquiring sender devices list");
+    _acquire_sender_devices_list();
+
     GSList* contacts = roster_get_contacts(ROSTER_ORD_NAME);
     if (contacts) {
         GSList* curr;