once an exception gets set while scanning folders, abort the loop. Jeff -- Jeffrey Stedfast Evolution Hacker - Novell, Inc. fejj ximian com - www.novell.com
? 24026.patch ? 62136.patch ? 62771-camel.patch ? 63504.patch ? body ? body.c ? body.txt ? body2.txt ? build.patch ? charset-map.c ? charset-map.diff ? class.sh ? cmsutil.c ? date.patch ? flags ? foo ? foo.txt ? foo2.txt ? gw-body.txt ? iso ? iso.c ? lang.patch ? namespace.sh ? smime ? providers/imap4/reconnect.patch ? tests/data/camel-mime-tests.tar.gz Index: ChangeLog =================================================================== RCS file: /cvs/gnome/evolution/camel/ChangeLog,v retrieving revision 1.2246 diff -u -r1.2246 ChangeLog --- ChangeLog 21 Aug 2004 06:58:22 -0000 1.2246 +++ ChangeLog 23 Aug 2004 18:51:11 -0000 @@ -1,3 +1,10 @@ +2004-08-23 Jeffrey Stedfast <fejj novell com> + + * providers/imap/camel-imap-store.c (get_folders): Check for an + exception from get_folders_online() here so that we don't send + commands to an IMAP server after a disconnect for example. See bug + #63504 for an example. + 2004-08-21 Sivaiah Nallagatla <snallagatla novell com> * providers/groupwise/camel-gw-listener.c (account_changed) : Index: providers/imap/camel-imap-store.c =================================================================== RCS file: /cvs/gnome/evolution/camel/providers/imap/camel-imap-store.c,v retrieving revision 1.298 diff -u -r1.298 camel-imap-store.c --- providers/imap/camel-imap-store.c 21 Jul 2004 15:55:00 -0000 1.298 +++ providers/imap/camel-imap-store.c 23 Aug 2004 18:51:11 -0000 @@ -2789,7 +2789,7 @@ get_folders(CamelStore *store, const char *top, guint32 flags, CamelException *ex) { CamelImapStore *imap_store = CAMEL_IMAP_STORE (store); - GSList *p = NULL; + GSList *q, *p = NULL; GHashTable *infos; int i; GPtrArray *folders, *folders_out; @@ -2860,7 +2860,7 @@ /* p is a reversed list of pending folders for the next level, q is the list of folders for this */ while (p) { - GSList *q = g_slist_reverse(p); + q = g_slist_reverse(p); p = NULL; while (q) { @@ -2888,7 +2888,10 @@ get_folders_online(imap_store, n, folders, flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIBED, ex); g_free(n); g_free(real); - + + if (camel_exception_is_set (ex)) + goto fail; + if (folders->len > 0) fi->flags |= CAMEL_FOLDER_CHILDREN; @@ -2905,6 +2908,12 @@ return folders_out; fail: + while (p != NULL) { + q = p->next; + g_slist_free_1 (p); + p = q; + } + g_ptr_array_free(folders, TRUE); g_ptr_array_free(folders_out, TRUE); g_hash_table_destroy(infos);
Attachment:
smime.p7s
Description: S/MIME cryptographic signature