about summary refs log tree commit diff stats
path: root/src/omemo/omemo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/omemo/omemo.c')
-rw-r--r--src/omemo/omemo.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c
index d580ed51..a20dc109 100644
--- a/src/omemo/omemo.c
+++ b/src/omemo/omemo.c
@@ -27,7 +27,6 @@
 
 static gboolean loaded;
 
-static void _omemo_publish_crypto_materials(ProfAccount *account);
 static void _generate_pre_keys(int count);
 static void _generate_signed_pre_key(void);
 static void _load_identity(void);
@@ -212,7 +211,6 @@ omemo_on_connect(ProfAccount *account)
 
     if (g_key_file_load_from_file(omemo_ctx.identity_keyfile, omemo_ctx.identity_filename->str, G_KEY_FILE_KEEP_COMMENTS, &error)) {
         _load_identity();
-        _omemo_publish_crypto_materials(account);
     } else if (error->code != G_FILE_ERROR_NOENT) {
         log_warning("OMEMO: error loading identity from: %s, %s", omemo_ctx.identity_filename->str, error->message);
         return;
@@ -291,18 +289,27 @@ omemo_generate_crypto_materials(ProfAccount *account)
 
     loaded = TRUE;
 
-    _omemo_publish_crypto_materials(account);
+    omemo_publish_crypto_materials();
 }
 
-static void
-_omemo_publish_crypto_materials(ProfAccount *account)
+void
+omemo_publish_crypto_materials(void)
 {
+    if (loaded != TRUE) {
+        log_error("OMEMO: cannot publish crypto materials before they are generated");
+        return;
+    }
+
+    Jid *jid = jid_create(connection_get_fulljid());
+
     /* Ensure we get our current device list, and it gets updated with our
      * device_id */
-    g_hash_table_insert(omemo_ctx.device_list_handler, strdup(account->jid), _handle_own_device_list);
-    omemo_devicelist_request(account->jid);
+    g_hash_table_insert(omemo_ctx.device_list_handler, strdup(jid->barejid), _handle_own_device_list);
+    omemo_devicelist_request(jid->barejid);
 
     omemo_bundle_publish(true);
+
+    jid_destroy(jid);
 }
 
 void