[evolution-data-server] Bug 747500 - Mail account connection settings change requires restart



commit fa523ce8303033a29096bf495f1192d1894d0f80
Author: Milan Crha <mcrha redhat com>
Date:   Fri Apr 10 07:17:56 2015 +0200

    Bug 747500 - Mail account connection settings change requires restart

 camel/camel-service.c                       |    6 ++++--
 camel/providers/imapx/camel-imapx-store.c   |    7 ++++++-
 camel/providers/nntp/camel-nntp-store.c     |    7 ++++++-
 camel/providers/pop3/camel-pop3-store.c     |    4 ++++
 camel/providers/smtp/camel-smtp-transport.c |    4 ++++
 5 files changed, 24 insertions(+), 4 deletions(-)
---
diff --git a/camel/camel-service.c b/camel/camel-service.c
index 3cd9935..4285a62 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -922,7 +922,6 @@ service_connect_sync (CamelService *service,
                       GCancellable *cancellable,
                       GError **error)
 {
-       /* Default behavior for local storage providers. */
        return TRUE;
 }
 
@@ -932,7 +931,10 @@ service_disconnect_sync (CamelService *service,
                          GCancellable *cancellable,
                          GError **error)
 {
-       /* Default behavior for local storage providers. */
+       if (CAMEL_IS_NETWORK_SERVICE (service))
+               camel_network_service_set_connectable (
+                       CAMEL_NETWORK_SERVICE (service), NULL);
+
        return TRUE;
 }
 
diff --git a/camel/providers/imapx/camel-imapx-store.c b/camel/providers/imapx/camel-imapx-store.c
index 0da35b4..40a2c49 100644
--- a/camel/providers/imapx/camel-imapx-store.c
+++ b/camel/providers/imapx/camel-imapx-store.c
@@ -774,6 +774,10 @@ imapx_connect_sync (CamelService *service,
        CamelIMAPXServer *imapx_server;
        gboolean success;
 
+       /* Chain up to parent's method. */
+       if (!CAMEL_SERVICE_CLASS (camel_imapx_store_parent_class)->connect_sync (service, cancellable, error))
+               return FALSE;
+
        imapx_store = CAMEL_IMAPX_STORE (service);
 
        imapx_server = camel_imapx_store_ref_server (imapx_store, NULL, FALSE, cancellable, error);
@@ -803,7 +807,8 @@ imapx_disconnect_sync (CamelService *service,
 
        g_mutex_unlock (&priv->server_lock);
 
-       return TRUE;
+       /* Chain up to parent's method. */
+       return CAMEL_SERVICE_CLASS (camel_imapx_store_parent_class)->disconnect_sync (service, clean, 
cancellable, error);
 }
 
 static CamelAuthenticationResult
diff --git a/camel/providers/nntp/camel-nntp-store.c b/camel/providers/nntp/camel-nntp-store.c
index e659f0a..86a5772 100644
--- a/camel/providers/nntp/camel-nntp-store.c
+++ b/camel/providers/nntp/camel-nntp-store.c
@@ -459,6 +459,10 @@ nntp_store_connect_sync (CamelService *service,
 {
        CamelNNTPStore *nntp_store;
 
+       /* Chain up to parent's method. */
+       if (!CAMEL_SERVICE_CLASS (camel_nntp_store_parent_class)->connect_sync (service, cancellable, error))
+               return FALSE;
+
        nntp_store = CAMEL_NNTP_STORE (service);
 
        if (!connect_to_server (service, cancellable, error))
@@ -491,7 +495,8 @@ nntp_store_disconnect_sync (CamelService *service,
 
        nntp_store_reset_state (nntp_store, NULL);
 
-       return TRUE;
+       /* Chain up to parent's method. */
+       return CAMEL_SERVICE_CLASS (camel_nntp_store_parent_class)->disconnect_sync (service, clean, 
cancellable, error);
 }
 
 extern CamelServiceAuthType camel_nntp_anonymous_authtype;
diff --git a/camel/providers/pop3/camel-pop3-store.c b/camel/providers/pop3/camel-pop3-store.c
index 56a3c99..6ac3d49 100644
--- a/camel/providers/pop3/camel-pop3-store.c
+++ b/camel/providers/pop3/camel-pop3-store.c
@@ -509,6 +509,10 @@ pop3_store_connect_sync (CamelService *service,
        gboolean success = TRUE;
        gchar *mechanism;
 
+       /* Chain up to parent's method. */
+       if (!CAMEL_SERVICE_CLASS (camel_pop3_store_parent_class)->connect_sync (service, cancellable, error))
+               return FALSE;
+
        session = camel_service_ref_session (service);
        user_data_dir = camel_service_get_user_data_dir (service);
 
diff --git a/camel/providers/smtp/camel-smtp-transport.c b/camel/providers/smtp/camel-smtp-transport.c
index 53c90ef..45f9ecc 100644
--- a/camel/providers/smtp/camel-smtp-transport.c
+++ b/camel/providers/smtp/camel-smtp-transport.c
@@ -403,6 +403,10 @@ smtp_transport_connect_sync (CamelService *service,
        gboolean auth_required;
        gboolean success = TRUE;
 
+       /* Chain up to parent's method. */
+       if (!CAMEL_SERVICE_CLASS (camel_smtp_transport_parent_class)->connect_sync (service, cancellable, 
error))
+               return FALSE;
+
        smtp_debug_print_server_name (service, "Connecting to");
 
        settings = camel_service_ref_settings (service);


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