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);