about summary refs log tree commit diff stats
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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;