diff options
author | Peter Williams <peterw@src.gnome.org> | 2000-08-23 04:09:11 +0800 |
---|---|---|
committer | Peter Williams <peterw@src.gnome.org> | 2000-08-23 04:09:11 +0800 |
commit | 130bb0e5710983ce14d1151f2611beaff6891379 (patch) | |
tree | b54b0a4141379ea553cdad8b7ac6d80a5fba2acb /camel/providers/imap | |
parent | dcc47cc15f6ff1e1cb866495625006e5481f85a6 (diff) | |
download | gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.tar gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.tar.gz gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.tar.bz2 gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.tar.lz gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.tar.xz gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.tar.zst gsoc2013-evolution-130bb0e5710983ce14d1151f2611beaff6891379.zip |
Automatically connect services when given a valid URL (should hopefully disconnect, too); remove the old movemail folder correctly.
svn path=/trunk/; revision=4965
Diffstat (limited to 'camel/providers/imap')
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 0a2be4f326..f7662ade84 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -60,7 +60,8 @@ static void finalize (CamelObject *object); static gboolean imap_create (CamelFolder *folder, CamelException *ex); static gboolean imap_connect (CamelService *service, CamelException *ex); static gboolean imap_disconnect (CamelService *service, CamelException *ex); -static GList *query_auth_types (CamelService *service, CamelException *ex); +static GList *query_auth_types_generic (CamelService *service, CamelException *ex); +static GList *query_auth_types_connected (CamelService *service, CamelException *ex); static void free_auth_types (CamelService *service, GList *authtypes); static char *get_name (CamelService *service, gboolean brief); static CamelFolder *get_folder (CamelStore *store, const char *folder_name, gboolean create, @@ -84,7 +85,8 @@ camel_imap_store_class_init (CamelImapStoreClass *camel_imap_store_class) /* virtual method overload */ camel_service_class->connect = imap_connect; camel_service_class->disconnect = imap_disconnect; - camel_service_class->query_auth_types = query_auth_types; + camel_service_class->query_auth_types_generic = query_auth_types_generic; + camel_service_class->query_auth_types_connected = query_auth_types_connected; camel_service_class->free_auth_types = free_auth_types; camel_service_class->get_name = get_name; @@ -129,11 +131,14 @@ camel_imap_store_get_type (void) static void finalize (CamelObject *object) { - CamelException ex; - - camel_exception_init (&ex); - imap_disconnect (CAMEL_SERVICE (object), &ex); - camel_exception_clear (&ex); + /* Done for us now */ + /* + *CamelException ex; + * + *camel_exception_init (&ex); + *imap_disconnect (CAMEL_SERVICE (object), &ex); + *camel_exception_clear (&ex); + */ } static CamelServiceAuthType password_authtype = { @@ -178,17 +183,18 @@ try_connect (CamelService *service, CamelException *ex) #endif static GList * -query_auth_types (CamelService *service, CamelException *ex) +query_auth_types_connected (CamelService *service, CamelException *ex) { +#if 0 GList *ret = NULL; gboolean passwd = TRUE; -#if 0 + if (service->url) { passwd = try_connect (service, ex); if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) return NULL; } -#endif + if (passwd) ret = g_list_append (ret, &password_authtype); @@ -200,6 +206,16 @@ query_auth_types (CamelService *service, CamelException *ex) } return ret; +#else + g_warning ("imap::query_auth_types_connected: not implemented. Defaulting."); + return query_auth_types_generic (service, ex); +#endif +} + +static GList * +query_auth_types_generic (CamelService *service, CamelException *ex) +{ + return g_list_append (NULL, &password_authtype); } static void @@ -408,9 +424,11 @@ imap_disconnect (CamelService *service, CamelException *ex) char *result; int status; - if (!service->connected) - return TRUE; - + + /*if (!service->connected) + * return TRUE; + */ + /* send the logout command */ status = camel_imap_command_extended (CAMEL_IMAP_STORE (service), NULL, &result, "LOGOUT"); if (status != CAMEL_IMAP_OK) { |