perf: flush OMEMO store only after encrypting for all recipients (upstream cbe6dac4)

This commit is contained in:
2026-03-31 19:48:20 +03:00
parent e8b8a8d52e
commit 6831c4a192

View File

@@ -598,9 +598,13 @@ omemo_sessions_keyfile(void)
return omemo_ctx.sessions.keyfile; return omemo_ctx.sessions.keyfile;
} }
static gboolean omemo_sessions_keyfile_save_disable = FALSE;
void void
omemo_sessions_keyfile_save(void) omemo_sessions_keyfile_save(void)
{ {
if (omemo_sessions_keyfile_save_disable)
return;
save_keyfile(&omemo_ctx.sessions); save_keyfile(&omemo_ctx.sessions);
} }
@@ -718,6 +722,8 @@ omemo_on_message_send(ProfWin* win, const char* const message, gboolean request_
unsigned char* key_tag; unsigned char* key_tag;
size_t ciphertext_len, tag_len; size_t ciphertext_len, tag_len;
omemo_sessions_keyfile_save_disable = TRUE;
ciphertext_len = strlen(message); ciphertext_len = strlen(message);
ciphertext = malloc(ciphertext_len); ciphertext = malloc(ciphertext_len);
tag_len = AES128_GCM_TAG_LENGTH; tag_len = AES128_GCM_TAG_LENGTH;
@@ -882,6 +888,8 @@ omemo_on_message_send(ProfWin* win, const char* const message, gboolean request_
} }
out: out:
omemo_sessions_keyfile_save_disable = FALSE;
omemo_sessions_keyfile_save();
g_list_free_full(keys, (GDestroyNotify)omemo_key_free); g_list_free_full(keys, (GDestroyNotify)omemo_key_free);
free(ciphertext); free(ciphertext);
gcry_free(key); gcry_free(key);