summaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2010-09-03 15:40:05 +0200
committerPatrick Ohly <patrick.ohly@intel.com>2010-09-03 15:40:05 +0200
commit9286d914c064f5e3966fee149224eeb78a7123c8 (patch)
tree95124723e413be1b371f25338394cca890334bdb /debian
parenta5e6f4840ba15bffce8b5188f0e8b866729c75fd (diff)
EDS: workaround for D-Bus method timeouts (BMC #4026)
libecal/ebook implementation based on D-Bus (Evolution >= 2.30) inevitably will run into D-Bus timeouts as the amount of data increases. This patch moves an earlier hack written for Maemo into the core code and enables it by default, if the EDS backends are active. It works by intercepting dbus_connection_send_with_reply() and substituting timeout_milliseconds==-1 ("default timeout of 25 seconds") with timeout_milliseconds=INT_MAX ("no timeout"). Setting SYNCEVOLUTION_DBUS_TIMEOUT to number of milliseconds allows controlling the final timeout value.
Diffstat (limited to 'debian')
-rw-r--r--debian/dbus-wrapper.cpp57
1 files changed, 0 insertions, 57 deletions
diff --git a/debian/dbus-wrapper.cpp b/debian/dbus-wrapper.cpp
deleted file mode 100644
index 1fffb7e4..00000000
--- a/debian/dbus-wrapper.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2008 Patrick Ohly
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) version 3.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-
-#include <dlfcn.h>
-
-/**
- * There are valid use cases where the (previously hard-coded) default
- * timeout was too short. This function replaces _DBUS_DEFAULT_TIMEOUT_VALUE
- * and - if set - interprets the content of DBUS_DEFAULT_TIMEOUT as
- * number of milliseconds.
- */
-static int _dbus_connection_default_timeout(void)
-{
- const char *def = getenv("DBUS_DEFAULT_TIMEOUT");
- int timeout = 0;
-
- if (def) {
- timeout = atoi(def);
- }
- if (timeout <= 0) {
- /* the traditional _DBUS_DEFAULT_TIMEOUT_VALUE */
- timeout = 25 * 1000;
- }
-}
-
-extern "C" int
-dbus_connection_send_with_reply (void *connection,
- void *message,
- void **pending_return,
- int timeout_milliseconds)
-{
- static typeof(dbus_connection_send_with_reply) *real_func;
-
- if (!real_func) {
- real_func = (typeof(dbus_connection_send_with_reply) *)dlsym(RTLD_NEXT, "dbus_connection_send_with_reply");
- }
- return real_func ?
- real_func(connection, message, pending_return,
- timeout_milliseconds == -1 ? _dbus_connection_default_timeout() : timeout_milliseconds) :
- 0;
-}