[evolution-data-server] [CalDAV] Block EProxy::changed when changing priv::uri
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] [CalDAV] Block EProxy::changed when changing priv::uri
- Date: Mon, 10 Sep 2012 16:08:37 +0000 (UTC)
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]