From 6de256c2a2b23f30d35e4a2213ad5839bf141d06 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Sun, 24 Dec 2000 00:46:20 +0000 Subject: Lock the command channel while searching. (imap_body_contains): If 2000-12-24 Not Zed * providers/imap/camel-imap-search.c (imap_body_contains): Lock the command channel while searching. (imap_body_contains): If performing a whole uid search, then add references to our own summary items, dont look it up in the folder. This way they can't vanish unexpectedly. * providers/imap/camel-imap-folder.h (CamelImapFolder): Added a private field. * providers/imap/camel-imap-private.h: Added lock for imap searches. * Merge from camel-mt-branch. * providers/imap/camel-imap-folder.c (imap_update_summary): Merge fix, use the folder->summary. (imap_get_message_flags, imap_set_message_flags, imap_get_message_user_flag, imap_set_message_user_flag): Removed again. (camel_imap_folder_init): Setup private data/lock. (imap_finalize): Free private data/search lock. (imap_search_free): Lock the search_lock. (imap_search_by_expression): Lock the search lock when using the search object. Also copy/ref hte summary, rather than getting it directly. (imap_refresh_info): Free any info lookups. Use folder->summary not imap_folder->summary. And lock around commands. svn path=/trunk/; revision=7150 --- camel/providers/imap/camel-imap-auth.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'camel/providers/imap/camel-imap-auth.c') diff --git a/camel/providers/imap/camel-imap-auth.c b/camel/providers/imap/camel-imap-auth.c index c510eaf01c..42abd1fa55 100644 --- a/camel/providers/imap/camel-imap-auth.c +++ b/camel/providers/imap/camel-imap-auth.c @@ -42,6 +42,10 @@ #include "camel-imap-command.h" #include "camel-imap-utils.h" +#include "camel-imap-private.h" + +#ifdef HAVE_KRB4 + static char * base64_encode_simple (const char *data, int len) { @@ -66,7 +70,6 @@ base64_decode_simple (char *data, int len) (unsigned char *)data, &state, &save); } -#ifdef HAVE_KRB4 #define IMAP_KERBEROS_V4_PROTECTION_NONE 1 #define IMAP_KERBEROS_V4_PROTECTION_INTEGRITY 2 #define IMAP_KERBEROS_V4_PROTECTION_PRIVACY 4 @@ -85,14 +88,17 @@ imap_try_kerberos_v4_auth (CamelImapStore *store, CamelException *ex) des_cblock session; des_key_schedule schedule; + CAMEL_IMAP_STORE_LOCK(store, command_lock); + /* The kickoff. */ response = camel_imap_command (store, NULL, ex, "AUTHENTICATE KERBEROS_V4"); if (!response) - return FALSE; + goto fail; resp = camel_imap_response_extract_continuation (response, ex); if (!resp) - return FALSE; + goto fail; + data = imap_next_word (resp); /* First server response is a base64-encoded 32-bit random number @@ -182,6 +188,7 @@ imap_try_kerberos_v4_auth (CamelImapStore *store, CamelException *ex) if (!response) goto lose; camel_imap_response_free (response); + CAMEL_IMAP_STORE_UNLOCK(store, command_lock); return TRUE; break_and_lose: @@ -197,6 +204,8 @@ imap_try_kerberos_v4_auth (CamelImapStore *store, CamelException *ex) camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, _("Bad authentication response from server.")); } +fail: + CAMEL_IMAP_STORE_UNLOCK(store, command_lock); return FALSE; } #endif /* HAVE_KRB4 */ -- cgit v1.2.3