From 6831c4a192e8565198f44ddf1621ebf77f9cd177 Mon Sep 17 00:00:00 2001 From: "jabber.developer2" Date: Tue, 31 Mar 2026 19:48:20 +0300 Subject: [PATCH] perf: flush OMEMO store only after encrypting for all recipients (upstream cbe6dac4) --- src/omemo/omemo.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c index 72a8b105..c9faf0dc 100644 --- a/src/omemo/omemo.c +++ b/src/omemo/omemo.c @@ -598,9 +598,13 @@ omemo_sessions_keyfile(void) return omemo_ctx.sessions.keyfile; } +static gboolean omemo_sessions_keyfile_save_disable = FALSE; + void omemo_sessions_keyfile_save(void) { + if (omemo_sessions_keyfile_save_disable) + return; 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; size_t ciphertext_len, tag_len; + omemo_sessions_keyfile_save_disable = TRUE; + ciphertext_len = strlen(message); ciphertext = malloc(ciphertext_len); tag_len = AES128_GCM_TAG_LENGTH; @@ -882,6 +888,8 @@ omemo_on_message_send(ProfWin* win, const char* const message, gboolean request_ } out: + omemo_sessions_keyfile_save_disable = FALSE; + omemo_sessions_keyfile_save(); g_list_free_full(keys, (GDestroyNotify)omemo_key_free); free(ciphertext); gcry_free(key);