[evolution-data-server] [CamelFolder/Store] Check online state of the session too before connecting



commit 393b23d8ff861b7170f3ee13d8b42aef4d32826f
Author: Milan Crha <mcrha redhat com>
Date:   Fri Oct 24 11:14:56 2014 +0200

    [CamelFolder/Store] Check online state of the session too before connecting
    
    The code tested only network service and offline store descendants,
    but anything else was always connected when needed, which wasn't good
    when the CamelSession was in the offline mode.

 camel/camel-folder.c |    5 ++++-
 camel/camel-store.c  |    5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index 919f7c9..49bbd7a 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -516,6 +516,7 @@ folder_maybe_connect_sync (CamelFolder *folder,
        CamelService *service;
        CamelStore *parent_store;
        CamelServiceConnectionStatus status;
+       CamelSession *session;
        gboolean connect = FALSE;
        gboolean success = TRUE;
 
@@ -525,8 +526,10 @@ folder_maybe_connect_sync (CamelFolder *folder,
        parent_store = camel_folder_get_parent_store (folder);
 
        service = CAMEL_SERVICE (parent_store);
+       session = camel_service_ref_session (service);
        status = camel_service_get_connection_status (service);
-       connect = (status != CAMEL_SERVICE_CONNECTED);
+       connect = camel_session_get_online (session) && (status != CAMEL_SERVICE_CONNECTED);
+       g_clear_object (&session);
 
        if (connect && CAMEL_IS_NETWORK_SERVICE (parent_store)) {
                /* Disregard errors here.  Just want to
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 52fed56..5aad175 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -294,6 +294,7 @@ store_maybe_connect_sync (CamelStore *store,
 {
        CamelService *service;
        CamelServiceConnectionStatus status;
+       CamelSession *session;
        gboolean connect = FALSE;
        gboolean success = TRUE;
 
@@ -301,8 +302,10 @@ store_maybe_connect_sync (CamelStore *store,
         * when the CamelService is online but disconnected. */
 
        service = CAMEL_SERVICE (store);
+       session = camel_service_ref_session (service);
        status = camel_service_get_connection_status (service);
-       connect = (status != CAMEL_SERVICE_CONNECTED);
+       connect = camel_session_get_online (session) && (status != CAMEL_SERVICE_CONNECTED);
+       g_clear_object (&session);
 
        if (connect && CAMEL_IS_NETWORK_SERVICE (store)) {
                /* Disregard errors here.  Just want to


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]