@@ -275,26 +275,23 @@ omemo_on_connect(ProfAccount* account)
275275void
276276omemo_on_disconnect (void )
277277{
278- if (!omemo_ctx .loaded ) {
279- return ;
278+ if (omemo_ctx .loaded ) {
279+ free_keyfile (& omemo_ctx .knowndevices );
280+ free_keyfile (& omemo_ctx .sessions );
281+ free_keyfile (& omemo_ctx .trust );
282+
283+ ec_public_key * pub = ratchet_identity_key_pair_get_public (omemo_ctx .identity_key_pair );
284+ ec_private_key * priv = ratchet_identity_key_pair_get_private (omemo_ctx .identity_key_pair );
285+ ratchet_identity_key_pair_destroy ((signal_type_base * )omemo_ctx .identity_key_pair );
286+ ec_private_key_destroy ((signal_type_base * )priv );
287+ ec_public_key_destroy ((signal_type_base * )pub );
280288 }
281289
290+ free_keyfile (& omemo_ctx .identity );
282291 g_hash_table_destroy (omemo_ctx .known_devices );
283292 g_hash_table_destroy (omemo_ctx .device_list_handler );
284293 g_hash_table_destroy (omemo_ctx .device_list );
285-
286- free_keyfile (& omemo_ctx .knowndevices );
287- free_keyfile (& omemo_ctx .sessions );
288- free_keyfile (& omemo_ctx .trust );
289- free_keyfile (& omemo_ctx .identity );
290-
291294 signal_protocol_store_context_destroy (omemo_ctx .store );
292- ec_public_key * pub = ratchet_identity_key_pair_get_public (omemo_ctx .identity_key_pair );
293- ec_private_key * priv = ratchet_identity_key_pair_get_private (omemo_ctx .identity_key_pair );
294- ratchet_identity_key_pair_destroy ((signal_type_base * )omemo_ctx .identity_key_pair );
295- ec_private_key_destroy ((signal_type_base * )priv );
296- ec_public_key_destroy ((signal_type_base * )pub );
297-
298295 signal_context_destroy (omemo_ctx .signal );
299296 memset (& omemo_ctx , 0 , sizeof (omemo_ctx ));
300297}
0 commit comments