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



commit 4cf9e149086f4e751950e0fcc9ca0ed87aa795bf
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 92bc914..a4d08bd 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -518,6 +518,7 @@ folder_maybe_connect_sync (CamelFolder *folder,
        CamelService *service;
        CamelStore *parent_store;
        CamelServiceConnectionStatus status;
+       CamelSession *session;
        gboolean connect = FALSE;
        gboolean success = TRUE;
 
@@ -527,8 +528,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 81238ba..449b161 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -296,6 +296,7 @@ store_maybe_connect_sync (CamelStore *store,
 {
        CamelService *service;
        CamelServiceConnectionStatus status;
+       CamelSession *session;
        gboolean connect = FALSE;
        gboolean success = TRUE;
 
@@ -303,8 +304,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]