aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2002-10-03 08:15:23 +0800
committerMichael Zucci <zucchi@src.gnome.org>2002-10-03 08:15:23 +0800
commit5799cfdceaf45654bba88a2f82b72b0095773ccc (patch)
tree9e478e975be2f0e9145be552c77c588cadfe8d9c /camel/providers
parentcc7c739d5197fa5c9991a859ee528e7bc39476df (diff)
downloadgsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.tar
gsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.tar.gz
gsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.tar.bz2
gsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.tar.lz
gsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.tar.xz
gsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.tar.zst
gsoc2013-evolution-5799cfdceaf45654bba88a2f82b72b0095773ccc.zip
/home/notzed/gnome/head/evolution/camel
2002-10-02 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-folder.c (get_matching): Set *set to NULL if we dont get any matches. (imap_sync_online): If we get no matches, skip any work, also reorder some code to make it easier to skip. See #31031. * providers/imap/camel-imap-store.c (imap_check_folder_still_extant): Default to "TRUE", if the list command failed, it probably means a server problem, assume the worst. This makes imap_refresh_info not clear the exception and crash. Fixes crash of #31000. 2002-10-01 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-folder.c (imap_refresh_info): Make sure we pass the exception to imap_folder_selected(), otherwise failures can be lost. See bug #31000. 2002-10-01 Not Zed <NotZed@Ximian.com> * camel-folder.c (thaw): Add an assertion that the frozen count>0. (freeze): Same for >= 0. * camel-vee-folder.c (camel_vee_folder_remove_folder): Use the unmatched freeze_count when thawing folders removed from unmatched, rather than the folder's freeze_count. Might be related to #27391. svn path=/trunk/; revision=18314
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/imap/camel-imap-folder.c15
-rw-r--r--camel/providers/imap/camel-imap-store.c19
2 files changed, 14 insertions, 20 deletions
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index fda6701693..0dec157509 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -488,7 +488,7 @@ imap_refresh_info (CamelFolder *folder, CamelException *ex)
CAMEL_SERVICE_UNLOCK (imap_store, connect_lock);
response = camel_imap_command (imap_store, folder, ex, NULL);
if (response) {
- camel_imap_folder_selected (folder, response, NULL);
+ camel_imap_folder_selected (folder, response, ex);
camel_imap_response_free (imap_store, response);
}
return;
@@ -715,6 +715,7 @@ get_matching (CamelFolder *folder, guint32 flags, guint32 mask, char **set)
g_string_free (gset, FALSE);
return matches;
} else {
+ *set = NULL
g_string_free (gset, TRUE);
g_ptr_array_free (matches, TRUE);
return NULL;
@@ -760,11 +761,7 @@ imap_sync_online (CamelFolder *folder, CamelException *ex)
empty-set of flags so... if this is true then we
want to unset the previously set flags.*/
unset = !(info->flags & CAMEL_IMAP_SERVER_FLAGS);
-
- /* FIXME: since we don't know the previously set flags,
- if unset is TRUE then just unset all the flags? */
- flaglist = imap_create_flag_list (unset ? CAMEL_IMAP_SERVER_FLAGS : info->flags);
-
+
/* Note: get_matching() uses UID_SET_LIMIT to limit
the size of the uid-set string. We don't have to
loop here to flush all the matching uids because
@@ -773,7 +770,13 @@ imap_sync_online (CamelFolder *folder, CamelException *ex)
matches = get_matching (folder, info->flags & (CAMEL_IMAP_SERVER_FLAGS | CAMEL_MESSAGE_FOLDER_FLAGGED),
CAMEL_IMAP_SERVER_FLAGS | CAMEL_MESSAGE_FOLDER_FLAGGED, &set);
camel_folder_summary_info_free (folder->summary, info);
+ if (matches == NULL)
+ continue;
+ /* FIXME: since we don't know the previously set flags,
+ if unset is TRUE then just unset all the flags? */
+ flaglist = imap_create_flag_list (unset ? CAMEL_IMAP_SERVER_FLAGS : info->flags);
+
/* Note: to `unset' flags, use -FLAGS.SILENT (<flag list>) */
response = camel_imap_command (store, folder, &local_ex,
"UID STORE %s %sFLAGS.SILENT %s",
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index fe0a04f8dc..1da03ffdef 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -944,24 +944,16 @@ imap_check_folder_still_extant (CamelImapStore *imap_store, const char *full_nam
full_name);
if (response) {
- gboolean stillthere = FALSE;
-
- if (response->untagged->len)
- stillthere = TRUE;
+ gboolean stillthere = response->untagged->len != 0;
camel_imap_response_free_without_processing (imap_store, response);
- if (stillthere)
- return TRUE;
+ return stillthere;
}
- /* either LIST command was rejected or it gave no results,
- * we can be sure that the folder is gone. */
-
- camel_exception_setv (ex, CAMEL_EXCEPTION_FOLDER_INVALID,
- _("The folder %s no longer exists"),
- full_name);
- return FALSE;
+ /* if the command was rejected, there must be some other error,
+ assume it worked so we dont blow away the folder unecessarily */
+ return TRUE;
}
static void
@@ -1008,7 +1000,6 @@ imap_store_refresh_folders (CamelImapStore *store, CamelException *ex)
camel_object_unref((CamelObject *)folder);
imap_folder_effectively_unsubscribed (store, namedup, ex);
imap_forget_folder (store, namedup, ex);
- camel_exception_clear (ex);
g_free (namedup);
} else
camel_object_unref((CamelObject *)folder);