[evolution-data-server] [CalDAV] Block EProxy::changed when changing priv::uri



commit 7e5f367063dfc1586ea1f2e6a653ac8bb10edf49
Author: Milan Crha <mcrha redhat com>
Date:   Mon Sep 10 18:07:12 2012 +0200

    [CalDAV] Block EProxy::changed when changing priv::uri

 calendar/backends/caldav/e-cal-backend-caldav.c |   42 +++++++++++++----------
 1 files changed, 24 insertions(+), 18 deletions(-)
---
diff --git a/calendar/backends/caldav/e-cal-backend-caldav.c b/calendar/backends/caldav/e-cal-backend-caldav.c
index 405faea..9e8a84c 100644
--- a/calendar/backends/caldav/e-cal-backend-caldav.c
+++ b/calendar/backends/caldav/e-cal-backend-caldav.c
@@ -2542,6 +2542,24 @@ caldav_get_backend_property (ECalBackendSync *backend,
 	return processed;
 }
 
+static void
+proxy_settings_changed (EProxy *proxy,
+                        gpointer user_data)
+{
+	SoupURI *proxy_uri = NULL;
+	ECalBackendCalDAVPrivate *priv = (ECalBackendCalDAVPrivate *) user_data;
+
+	if (!priv || !priv->uri || !priv->session)
+		return;
+
+	/* use proxy if necessary */
+	if (e_proxy_require_proxy_for_uri (proxy, priv->uri)) {
+		proxy_uri = e_proxy_peek_uri_for (proxy, priv->uri);
+	}
+
+	g_object_set (priv->session, SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
+}
+
 static gboolean
 initialize_backend (ECalBackendCalDAV *cbdav,
                     GError **perror)
@@ -2602,11 +2620,15 @@ initialize_backend (ECalBackendCalDAV *cbdav,
 		g_free (path);
 	}
 
+	g_signal_handlers_block_by_func (cbdav->priv->proxy, proxy_settings_changed, cbdav);
+
 	g_free (cbdav->priv->uri);
 	cbdav->priv->uri = soup_uri_to_string (soup_uri, FALSE);
 
 	soup_uri_free (soup_uri);
 
+	if (!cbdav->priv->uri)
+		g_signal_handlers_unblock_by_func (cbdav->priv->proxy, proxy_settings_changed, cbdav);
 	g_return_val_if_fail (cbdav->priv->uri != NULL, FALSE);
 
 	/* remove trailing slashes... */
@@ -2630,6 +2652,8 @@ initialize_backend (ECalBackendCalDAV *cbdav,
 		g_free (tmp);
 	}
 
+	g_signal_handlers_unblock_by_func (cbdav->priv->proxy, proxy_settings_changed, cbdav);
+
 	if (cbdav->priv->store == NULL) {
 		/* remove the old cache while migrating to ECalBackendStore */
 		e_cal_backend_cache_remove (cache_dir, "cache.xml");
@@ -2670,24 +2694,6 @@ initialize_backend (ECalBackendCalDAV *cbdav,
 	return TRUE;
 }
 
-static void
-proxy_settings_changed (EProxy *proxy,
-                        gpointer user_data)
-{
-	SoupURI *proxy_uri = NULL;
-	ECalBackendCalDAVPrivate *priv = (ECalBackendCalDAVPrivate *) user_data;
-
-	if (!priv || !priv->uri || !priv->session)
-		return;
-
-	/* use proxy if necessary */
-	if (e_proxy_require_proxy_for_uri (proxy, priv->uri)) {
-		proxy_uri = e_proxy_peek_uri_for (proxy, priv->uri);
-	}
-
-	g_object_set (priv->session, SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
-}
-
 static gboolean
 open_calendar (ECalBackendCalDAV *cbdav,
                GError **error)



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