diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 2853ef7df..6886d4201 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2140,21 +2140,22 @@ void linphone_core_enable_lime(LinphoneCore *lc, LinphoneLimeState val){ if (linphone_core_ready(lc)){ lp_config_set_int(lc->config,"sip","lime",val); } + + LinphoneImEncryptionEngine *imee = linphone_im_encryption_engine_new(lc); + LinphoneImEncryptionEngineCbs *cbs = linphone_im_encryption_engine_get_callbacks(imee); + linphone_im_encryption_engine_cbs_set_process_incoming_message(cbs, lime_im_encryption_engine_process_incoming_message_cb); + linphone_im_encryption_engine_cbs_set_process_downloading_file(cbs, lime_im_encryption_engine_process_downloading_file_cb); if (val != LinphoneLimeDisabled) { - LinphoneImEncryptionEngine *imee = linphone_im_encryption_engine_new(lc); - LinphoneImEncryptionEngineCbs *cbs = linphone_im_encryption_engine_get_callbacks(imee); - linphone_im_encryption_engine_cbs_set_process_incoming_message(cbs, lime_im_encryption_engine_process_incoming_message_cb); linphone_im_encryption_engine_cbs_set_process_outgoing_message(cbs, lime_im_encryption_engine_process_outgoing_message_cb); linphone_im_encryption_engine_cbs_set_process_downloading_file(cbs, lime_im_encryption_engine_process_downloading_file_cb); linphone_im_encryption_engine_cbs_set_process_uploading_file(cbs, lime_im_encryption_engine_process_uploading_file_cb); linphone_im_encryption_engine_cbs_set_is_encryption_enabled_for_file_transfer(cbs, lime_im_encryption_engine_is_file_encryption_enabled_cb); linphone_im_encryption_engine_cbs_set_generate_file_transfer_key(cbs, lime_im_encryption_engine_generate_file_transfer_key_cb); - linphone_core_set_im_encryption_engine(lc, imee); - linphone_im_encryption_engine_unref(imee); - } else { - linphone_core_set_im_encryption_engine(lc, NULL); - } + } + + linphone_core_set_im_encryption_engine(lc, imee); + linphone_im_encryption_engine_unref(imee); } bool_t linphone_core_lime_available(const LinphoneCore *lc){