summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2014-02-20 16:09:55 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2014-02-20 16:09:55 +0000
commit0cf0c416ec73f65d4631ec8e2b6409f95462c76e (patch)
treefd3542ba88dd6e6ea314a86b73ef370371d87420
parentbb0a112b949e71e5c7b9d82dcd37023bf04d8c83 (diff)
downloadcups-0cf0c416ec73f65d4631ec8e2b6409f95462c76e.tar.gz
Fix a D-BUS threading issue that caused the scheduler to crash (STR #4347)
Apparently D-BUS is not thread-safe by default... git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11626 a1ca3aef-8c08-0410-bb20-df032aa958be
-rw-r--r--CHANGES-1.7.txt2
-rw-r--r--config-scripts/cups-common.m414
-rw-r--r--config.h.in1
-rw-r--r--scheduler/main.c8
4 files changed, 18 insertions, 7 deletions
diff --git a/CHANGES-1.7.txt b/CHANGES-1.7.txt
index 25d3a227e..21abc9d47 100644
--- a/CHANGES-1.7.txt
+++ b/CHANGES-1.7.txt
@@ -5,6 +5,8 @@ CHANGES IN CUPS V1.7.2
- Security: The scheduler now blocks URLs containing embedded HTML
(STR #4356)
+ - Fixed a D-BUS threading issue that caused the scheduler to crash
+ (STR #4347)
- The scheduler now automatically reconnects to Avahi as needed
(STR #4370)
- The scheduler did not handle GET requests for the log files properly
diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4
index 0b66ac467..6318b77f7 100644
--- a/config-scripts/cups-common.m4
+++ b/config-scripts/cups-common.m4
@@ -3,7 +3,7 @@ dnl "$Id$"
dnl
dnl Common configuration stuff for CUPS.
dnl
-dnl Copyright 2007-2013 by Apple Inc.
+dnl Copyright 2007-2014 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -304,16 +304,11 @@ fi
LIBS="$SAVELIBS"
dnl Check for DBUS support
-if test -d /etc/dbus-1; then
- DBUSDIR="/etc/dbus-1"
-else
- DBUSDIR=""
-fi
-
AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
DBUSDIR="$withval")
+DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
@@ -330,7 +325,12 @@ if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
LIBS="$LIBS $DBUS_NOTIFIERLIBS"
AC_CHECK_FUNC(dbus_message_iter_init_append,
AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
+ AC_CHECK_FUNC(dbus_threads_init,
+ AC_DEFINE(HAVE_DBUS_THREADS_INIT))
LIBS="$SAVELIBS"
+ if test -d /etc/dbus-1; then
+ DBUSDIR="/etc/dbus-1"
+ fi
else
AC_MSG_RESULT(no)
fi
diff --git a/config.h.in b/config.h.in
index 7c96248f8..1b2df157e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -535,6 +535,7 @@
#undef HAVE_DBUS
#undef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND
+#undef HAVE_DBUS_THREADS_INIT
/*
diff --git a/scheduler/main.c b/scheduler/main.c
index 7ed396d61..f847e275c 100644
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -477,6 +477,14 @@ main(int argc, /* I - Number of command-line args */
setlocale(LC_TIME, "");
#endif /* LC_TIME */
+#ifdef HAVE_DBUS_THREADS_INIT
+ /*
+ * Enable threading support for D-BUS...
+ */
+
+ dbus_threads_init();
+#endif /* HAVE_DBUS_THREADS_INIT */
+
/*
* Set the maximum number of files...
*/