diff options
-rw-r--r-- | camel/ChangeLog | 6 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 26 |
2 files changed, 20 insertions, 12 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 15d9a4ed0b..d2e8bc5805 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,9 @@ +2000-10-16 Dan Winship <danw@helixcode.com> + + * providers/imap/camel-imap-store.c (get_folder_info): Deal with + the possibility of not getting a LIST response back for the top + level. + 2000-10-12 Dan Winship <danw@helixcode.com> * providers/imap/camel-imap-summary.c: Simple subclass of diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 1042160868..a561cab96d 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -520,7 +520,7 @@ get_folder_info (CamelStore *store, const char *top, gboolean fast, CamelImapResponse *response; GPtrArray *folders; char *dir_sep, *namespace, *base_url, *list; - CamelFolderInfo *topfi, *fi; + CamelFolderInfo *topfi = NULL, *fi; if (!top) top = ""; @@ -542,19 +542,21 @@ get_folder_info (CamelStore *store, const char *top, gboolean fast, response = camel_imap_command (imap_store, NULL, ex, "LIST \"\" \"%s\"", namespace); - if (!response) { - g_free (namespace); - g_free (base_url); - return NULL; + if (response) { + list = camel_imap_response_extract (response, "LIST", ex); + if (list) { + topfi = parse_list_response_as_folder_info (list, + namespace, + base_url); + g_free (list); + } } - list = camel_imap_response_extract (response, "LIST", ex); - if (!list) { - g_free (namespace); - g_free (base_url); - return NULL; + if (!topfi) { + camel_exception_clear (ex); + topfi = g_new0 (CamelFolderInfo, 1); + fi->full_name = g_strdup (namespace); + fi->name = g_strdup (namespace); } - topfi = parse_list_response_as_folder_info (list, namespace, base_url); - g_free (list); response = camel_imap_command (imap_store, NULL, ex, "LIST \"\" \"%s%s%c\"", |