diff options
author | Peter Williams <peterw@src.gnome.org> | 2000-08-31 01:09:42 +0800 |
---|---|---|
committer | Peter Williams <peterw@src.gnome.org> | 2000-08-31 01:09:42 +0800 |
commit | 2bdcfe5c47e9add476eab5d848b30d9d1715c153 (patch) | |
tree | 03ea965b34ee45f22bc00a737e9d9af1dd1992f7 /camel/camel-service.c | |
parent | e8df3eea83688f5656c076952dfcffb297c08ad1 (diff) | |
download | gsoc2013-evolution-2bdcfe5c47e9add476eab5d848b30d9d1715c153.tar.gz gsoc2013-evolution-2bdcfe5c47e9add476eab5d848b30d9d1715c153.tar.zst gsoc2013-evolution-2bdcfe5c47e9add476eab5d848b30d9d1715c153.zip |
Make CamelServices connect only when told to (old behavior). Make CamelRemoteStore do its stuff in service::connect, not ::post_connect.
svn path=/trunk/; revision=5116
Diffstat (limited to 'camel/camel-service.c')
-rw-r--r-- | camel/camel-service.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/camel/camel-service.c b/camel/camel-service.c index 9df7837bf7..63af88f4cb 100644 --- a/camel/camel-service.c +++ b/camel/camel-service.c @@ -176,6 +176,7 @@ camel_service_new (CamelType type, CamelSession *session, CamelProvider *provide service->connected = FALSE; +#if 0 if (!url->empty) { if (CSERV_CLASS (service)->connect (service, ex) == FALSE) { camel_object_unref (CAMEL_OBJECT (service)); @@ -184,6 +185,7 @@ camel_service_new (CamelType type, CamelSession *session, CamelProvider *provide service->connected = TRUE; } +#endif return service; } @@ -224,7 +226,12 @@ camel_service_connect (CamelService *service, CamelException *ex) return TRUE; } - return CSERV_CLASS (service)->connect (service, ex); + if (CSERV_CLASS (service)->connect (service, ex)) { + service->connected = TRUE; + return TRUE; + } + + return FALSE; } static gboolean @@ -253,13 +260,17 @@ service_disconnect (CamelService *service, CamelException *ex) gboolean camel_service_disconnect (CamelService *service, CamelException *ex) { + gboolean res; + if (!service->connected) { camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED, "Trying to disconnect from a service that isn't connected"); return FALSE; } - return CSERV_CLASS (service)->disconnect (service, ex); + res = CSERV_CLASS (service)->disconnect (service, ex); + service->connected = FALSE; + return res; } /** @@ -387,13 +398,12 @@ query_auth_types_func (CamelService *service, CamelException *ex) GList * camel_service_query_auth_types (CamelService *service, CamelException *ex) { - if (service->connected) - return CSERV_CLASS (service)->query_auth_types_connected (service, ex); - else + if (service->url->empty) return CSERV_CLASS (service)->query_auth_types_generic (service, ex); + else + return CSERV_CLASS (service)->query_auth_types_connected (service, ex); } - static void free_auth_types (CamelService *service, GList *authtypes) { |