From 4d932ed5aae303c8f01983aced9280aa1c1f563b Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 31 Jul 2007 02:59:42 +0000 Subject: set context hContact when fingerprints loaded - avoid use of inefficient 'find_contact' function git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@313 4f64403b-2f21-0410-a795-97e2b3489a10 --- otr/dllmain.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'otr/dllmain.cpp') diff --git a/otr/dllmain.cpp b/otr/dllmain.cpp index cd99563..c3f39b3 100644 --- a/otr/dllmain.cpp +++ b/otr/dllmain.cpp @@ -177,8 +177,15 @@ void SetEncryptionStatus(HANDLE hContact, bool encrypted) { // OTR stuff /////////////////////////////////////////////// +void set_context_contact(void *data, ConnContext *context) { + HANDLE hContact = get_contact(context->protocol, context->username); + context->app_data = hContact; +} + void add_appdata(void *data, ConnContext *context) { - if(context) context->app_data = data; // data is hContact + if(context) { + context->app_data = data; // data is hContact + } } void lib_cs_lock() { @@ -496,22 +503,24 @@ void Disconnect(ConnContext *context) { void CALLBACK ClearFinishedSessions(HWND, UINT, UINT, DWORD) { KillTimer(0, TIMER_ID_CLEAR_FINISHED); + lib_cs_lock(); //PUShowMessage("Clearing finished sessions", SM_NOTIFY); HANDLE hContact; ConnContext *context = otr_user_state->context_root; while(context) { if(context->msgstate == OTRL_MSGSTATE_FINISHED) { - //hContact = context->app_data; // why is this broken? - hContact = get_contact(context->protocol, context->username); - SetEncryptionStatus(hContact, false); - //PUShowMessage("Cleared a finished session", SM_NOTIFY); - - lib_cs_lock(); + hContact = context->app_data; + //hContact = get_contact(context->protocol, context->username); + if(hContact) { + SetEncryptionStatus(hContact, false); + //PUShowMessage("Cleared a finished session", SM_NOTIFY); + } //else + //PUShowMessage("Cleared a finished session - but hCcontact is null", SM_NOTIFY); otrl_context_force_plaintext(context); - lib_cs_unlock(); } context = context->next; } + lib_cs_unlock(); } void ResetFinishedTimer() { @@ -1203,7 +1212,7 @@ int IconPressed(WPARAM wParam, LPARAM lParam) { void ReadPrivkeyFiles() { lib_cs_lock(); otrl_privkey_read(otr_user_state, private_key_filename); - otrl_privkey_read_fingerprints(otr_user_state, fingerprint_store_filename, 0, 0); + otrl_privkey_read_fingerprints(otr_user_state, fingerprint_store_filename, set_context_contact, 0); lib_cs_unlock(); } -- cgit v1.2.3