diff --git a/.cvsignore b/.cvsignore
index 03fe990..50c43f8 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-dbus-1.2.16.tar.gz
+dbus-1.2.18.tar.gz
diff --git a/dbus-1.2.1-increase-timeout.patch b/dbus-1.2.1-increase-timeout.patch
deleted file mode 100644
index 6e73894..0000000
--- a/dbus-1.2.1-increase-timeout.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -urN dbus-1.2.1/bus/system.conf.in dbus-1.2.1.b/bus/system.conf.in
---- dbus-1.2.1/bus/system.conf.in 2008-04-04 11:24:08.000000000 -0400
-+++ dbus-1.2.1.b/bus/system.conf.in 2008-07-17 13:56:26.000000000 -0400
-@@ -17,6 +17,9 @@
-
- @DBUS_USER@
-
-+
-+ 21600000
-+
-
-
-
diff --git a/dbus-1.2.16-capability.patch b/dbus-1.2.16-capability.patch
deleted file mode 100644
index fe933f8..0000000
--- a/dbus-1.2.16-capability.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-diff -urp dbus-1.2.16.orig/bus/selinux.c dbus-1.2.16/bus/selinux.c
---- dbus-1.2.16.orig/bus/selinux.c 2009-10-03 08:46:51.000000000 -0400
-+++ dbus-1.2.16/bus/selinux.c 2009-10-03 08:47:26.000000000 -0400
-@@ -45,6 +45,7 @@
- #include
- #include
- #ifdef HAVE_LIBAUDIT
-+#include
- #include
- #endif /* HAVE_LIBAUDIT */
- #endif /* HAVE_SELINUX */
-@@ -143,13 +144,17 @@ log_callback (const char *fmt, ...)
- #ifdef HAVE_LIBAUDIT
- if (audit_fd >= 0)
- {
-- char buf[PATH_MAX*2];
-+ capng_get_caps_process();
-+ if (capng_have_capability(CAPNG_EFFECTIVE, CAP_AUDIT_WRITE))
-+ {
-+ char buf[PATH_MAX*2];
-
-- /* FIXME: need to change this to show real user */
-- vsnprintf(buf, sizeof(buf), fmt, ap);
-- audit_log_user_avc_message(audit_fd, AUDIT_USER_AVC, buf, NULL, NULL,
-+ /* FIXME: need to change this to show real user */
-+ vsnprintf(buf, sizeof(buf), fmt, ap);
-+ audit_log_user_avc_message(audit_fd, AUDIT_USER_AVC, buf, NULL, NULL,
- NULL, getuid());
-- return;
-+ return;
-+ }
- }
- #endif /* HAVE_LIBAUDIT */
-
-diff -urp dbus-1.2.16.orig/configure.in dbus-1.2.16/configure.in
---- dbus-1.2.16.orig/configure.in 2009-10-03 08:46:51.000000000 -0400
-+++ dbus-1.2.16/configure.in 2009-10-03 08:47:26.000000000 -0400
-@@ -844,7 +844,7 @@ else
- AC_CHECK_LIB(audit, audit_log_user_avc_message,
- have_libaudit=yes, have_libaudit=no)
- if test x$have_libaudit = xyes ; then
-- AC_CHECK_LIB(cap, cap_set_proc,
-+ AC_CHECK_LIB(cap-ng, capng_clear,
- have_libaudit=yes, have_libaudit=no)
- fi
- fi
-@@ -853,7 +853,7 @@ AM_CONDITIONAL(HAVE_LIBAUDIT, test x$hav
-
- if test x$have_libaudit = xyes ; then
- SELINUX_LIBS="$SELINUX_LIBS -laudit"
-- LIBS="-lcap $LIBS"
-+ LIBS="-lcap-ng $LIBS"
- AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
- fi
-
-diff -urp dbus-1.2.16.orig/dbus/dbus-sysdeps-util-unix.c dbus-1.2.16/dbus/dbus-sysdeps-util-unix.c
---- dbus-1.2.16.orig/dbus/dbus-sysdeps-util-unix.c 2009-10-03 08:46:51.000000000 -0400
-+++ dbus-1.2.16/dbus/dbus-sysdeps-util-unix.c 2009-10-03 08:52:14.000000000 -0400
-@@ -46,8 +46,7 @@
- #include
- #include
- #ifdef HAVE_LIBAUDIT
--#include
--#include
-+#include
- #include
- #endif /* HAVE_LIBAUDIT */
-
-@@ -323,10 +322,6 @@ _dbus_change_to_daemon_user (const char
- dbus_uid_t uid;
- dbus_gid_t gid;
- DBusString u;
--#ifdef HAVE_LIBAUDIT
-- dbus_bool_t we_were_root;
-- cap_t new_caps;
--#endif
-
- _dbus_string_init_const (&u, user);
-
-@@ -339,123 +334,49 @@ _dbus_change_to_daemon_user (const char
- }
-
- #ifdef HAVE_LIBAUDIT
-- we_were_root = _dbus_geteuid () == 0;
-- new_caps = NULL;
-- /* have a tmp set of caps that we use to transition to the usr/grp dbus should
-- * run as ... doesn't really help. But keeps people happy.
-- */
--
-- if (we_were_root)
-+ /* If we were root */
-+ if (_dbus_geteuid () == 0)
- {
-- cap_value_t new_cap_list[] = { CAP_AUDIT_WRITE };
-- cap_value_t tmp_cap_list[] = { CAP_AUDIT_WRITE, CAP_SETUID, CAP_SETGID };
-- cap_t tmp_caps = cap_init();
--
-- if (!tmp_caps || !(new_caps = cap_init ()))
-- {
-- dbus_set_error (error, DBUS_ERROR_FAILED,
-- "Failed to initialize drop of capabilities: %s\n",
-- _dbus_strerror (errno));
--
-- if (tmp_caps)
-- cap_free (tmp_caps);
-+ int rc;
-
-- return FALSE;
-- }
--
-- /* assume these work... */
-- cap_set_flag (new_caps, CAP_PERMITTED, 1, new_cap_list, CAP_SET);
-- cap_set_flag (new_caps, CAP_EFFECTIVE, 1, new_cap_list, CAP_SET);
-- cap_set_flag (tmp_caps, CAP_PERMITTED, 3, tmp_cap_list, CAP_SET);
-- cap_set_flag (tmp_caps, CAP_EFFECTIVE, 3, tmp_cap_list, CAP_SET);
--
-- if (prctl (PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1)
-+ capng_clear(CAPNG_SELECT_BOTH);
-+ capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED,
-+ CAP_AUDIT_WRITE);
-+ rc = capng_change_id(uid, gid, 0);
-+ if (rc)
- {
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-- "Failed to set keep-capabilities: %s\n",
-- _dbus_strerror (errno));
-- cap_free (tmp_caps);
-- goto fail;
-- }
--
-- if (cap_set_proc (tmp_caps) == -1)
-- {
-- dbus_set_error (error, DBUS_ERROR_FAILED,
-+ switch (rc) {
-+ default:
-+ dbus_set_error (error, DBUS_ERROR_FAILED,
- "Failed to drop capabilities: %s\n",
- _dbus_strerror (errno));
-- cap_free (tmp_caps);
-- goto fail;
-- }
-- cap_free (tmp_caps);
-- }
--#endif /* HAVE_LIBAUDIT */
--
-- /* setgroups() only works if we are a privileged process,
-- * so we don't return error on failure; the only possible
-- * failure is that we don't have perms to do it.
-- *
-- * not sure this is right, maybe if setuid()
-- * is going to work then setgroups() should also work.
-- */
-- if (setgroups (0, NULL) < 0)
-- _dbus_warn ("Failed to drop supplementary groups: %s\n",
-- _dbus_strerror (errno));
--
-- /* Set GID first, or the setuid may remove our permission
-- * to change the GID
-- */
-- if (setgid (gid) < 0)
-- {
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-+ break;
-+ case -4:
-+ dbus_set_error (error, _dbus_error_from_errno (errno),
- "Failed to set GID to %lu: %s", gid,
- _dbus_strerror (errno));
-- goto fail;
-- }
--
-- if (setuid (uid) < 0)
-- {
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-+ break;
-+ case -5:
-+ _dbus_warn ("Failed to drop supplementary groups: %s\n",
-+ _dbus_strerror (errno));
-+ break;
-+ case -6:
-+ dbus_set_error (error, _dbus_error_from_errno (errno),
- "Failed to set UID to %lu: %s", uid,
- _dbus_strerror (errno));
-- goto fail;
-- }
--
--#ifdef HAVE_LIBAUDIT
-- if (we_were_root)
-- {
-- if (cap_set_proc (new_caps))
-- {
-- dbus_set_error (error, DBUS_ERROR_FAILED,
-- "Failed to drop capabilities: %s\n",
-- _dbus_strerror (errno));
-- goto fail;
-- }
-- cap_free (new_caps);
--
-- /* should always work, if it did above */
-- if (prctl (PR_SET_KEEPCAPS, 0, 0, 0, 0) == -1)
-- {
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-+ break;
-+ case -7:
-+ dbus_set_error (error, _dbus_error_from_errno (errno),
- "Failed to unset keep-capabilities: %s\n",
- _dbus_strerror (errno));
-+ break;
-+ }
- return FALSE;
- }
- }
--#endif
-+#endif /* HAVE_LIBAUDIT */
-
- return TRUE;
--
-- fail:
--#ifdef HAVE_LIBAUDIT
-- if (!we_were_root)
-- {
-- /* should always work, if it did above */
-- prctl (PR_SET_KEEPCAPS, 0, 0, 0, 0);
-- cap_free (new_caps);
-- }
--#endif
--
-- return FALSE;
- }
-
- void
diff --git a/dbus-1.2.8-syslog.patch b/dbus-1.2.8-syslog.patch
deleted file mode 100644
index 7ba6116..0000000
--- a/dbus-1.2.8-syslog.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-From cde84d96106bd005a98d064fe392301ba1f87743 Mon Sep 17 00:00:00 2001
-From: Colin Walters
-Date: Wed, 10 Dec 2008 14:17:02 -0500
-Subject: [PATCH] Add syslog of security denials and configuration file reloads
-
-We need to start logging denials so that they become more easily trackable
-and debuggable.
----
- bus/bus.c | 41 +++++++++++++++++++++++++++++++----------
- bus/main.c | 1 +
- dbus/dbus-sysdeps-unix.c | 1 -
- dbus/dbus-sysdeps-util-unix.c | 38 ++++++++++++++++++++++++++++++++++++++
- dbus/dbus-sysdeps.h | 3 +++
- 5 files changed, 73 insertions(+), 11 deletions(-)
-
-diff --git a/bus/bus.c b/bus/bus.c
-index 42cc295..8d7879a 100644
---- a/bus/bus.c
-+++ b/bus/bus.c
-@@ -834,6 +834,7 @@ bus_context_reload_config (BusContext *context,
- }
- ret = TRUE;
-
-+ _dbus_log_info ("Reloaded configuration\n");
- failed:
- if (parser != NULL)
- bus_config_parser_unref (parser);
-@@ -1315,13 +1316,13 @@ bus_context_check_security_policy (BusContext *context,
- message))
- {
- const char *dest;
-+ const char *msg = "A security policy in place prevents this sender "
-+ "from sending this message to this recipient, "
-+ "see message bus configuration file (rejected message "
-+ "had interface \"%s\" member \"%s\" error name \"%s\" destination \"%s\")";
-
- dest = dbus_message_get_destination (message);
-- dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
-- "A security policy in place prevents this sender "
-- "from sending this message to this recipient, "
-- "see message bus configuration file (rejected message "
-- "had interface \"%s\" member \"%s\" error name \"%s\" destination \"%s\")",
-+ dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED, msg,
- dbus_message_get_interface (message) ?
- dbus_message_get_interface (message) : "(unset)",
- dbus_message_get_member (message) ?
-@@ -1329,6 +1330,15 @@ bus_context_check_security_policy (BusContext *context,
- dbus_message_get_error_name (message) ?
- dbus_message_get_error_name (message) : "(unset)",
- dest ? dest : DBUS_SERVICE_DBUS);
-+ /* Needs to be duplicated to avoid calling malloc and having to handle OOM */
-+ _dbus_log_security (msg,
-+ dbus_message_get_interface (message) ?
-+ dbus_message_get_interface (message) : "(unset)",
-+ dbus_message_get_member (message) ?
-+ dbus_message_get_member (message) : "(unset)",
-+ dbus_message_get_error_name (message) ?
-+ dbus_message_get_error_name (message) : "(unset)",
-+ dest ? dest : DBUS_SERVICE_DBUS);
- _dbus_verbose ("security policy disallowing message due to sender policy\n");
- return FALSE;
- }
-@@ -1341,14 +1351,14 @@ bus_context_check_security_policy (BusContext *context,
- addressed_recipient, proposed_recipient,
- message))
- {
-+ const char *msg = "A security policy in place prevents this recipient "
-+ "from receiving this message from this sender, "
-+ "see message bus configuration file (rejected message "
-+ "had interface \"%s\" member \"%s\" error name \"%s\" destination \"%s\" reply serial %u requested_reply=%d)";
- const char *dest;
-
- dest = dbus_message_get_destination (message);
-- dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED,
-- "A security policy in place prevents this recipient "
-- "from receiving this message from this sender, "
-- "see message bus configuration file (rejected message "
-- "had interface \"%s\" member \"%s\" error name \"%s\" destination \"%s\" reply serial %u requested_reply=%d)",
-+ dbus_set_error (error, DBUS_ERROR_ACCESS_DENIED, msg,
- dbus_message_get_interface (message) ?
- dbus_message_get_interface (message) : "(unset)",
- dbus_message_get_member (message) ?
-@@ -1358,6 +1368,17 @@ bus_context_check_security_policy (BusContext *context,
- dest ? dest : DBUS_SERVICE_DBUS,
- dbus_message_get_reply_serial (message),
- requested_reply);
-+ /* Needs to be duplicated to avoid calling malloc and having to handle OOM */
-+ _dbus_log_security (error, DBUS_ERROR_ACCESS_DENIED, msg,
-+ dbus_message_get_interface (message) ?
-+ dbus_message_get_interface (message) : "(unset)",
-+ dbus_message_get_member (message) ?
-+ dbus_message_get_member (message) : "(unset)",
-+ dbus_message_get_error_name (message) ?
-+ dbus_message_get_error_name (message) : "(unset)",
-+ dest ? dest : DBUS_SERVICE_DBUS,
-+ dbus_message_get_reply_serial (message),
-+ requested_reply);
- _dbus_verbose ("security policy disallowing message due to recipient policy\n");
- return FALSE;
- }
-diff --git a/bus/main.c b/bus/main.c
-index 51538fe..23ebb3e 100644
---- a/bus/main.c
-+++ b/bus/main.c
-@@ -178,6 +178,7 @@ handle_reload_watch (DBusWatch *watch,
- dbus_error_has_name (&error, DBUS_ERROR_NO_MEMORY));
- _dbus_warn ("Unable to reload configuration: %s\n",
- error.message);
-+ _dbus_log_info ("Unable to reload configuration: %s\n", error.message);
- dbus_error_free (&error);
- }
- return TRUE;
-diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
-index fb40d5a..01516a1 100644
---- a/dbus/dbus-sysdeps-unix.c
-+++ b/dbus/dbus-sysdeps-unix.c
-@@ -2786,7 +2786,6 @@ _dbus_full_duplex_pipe (int *fd1,
- #endif
- }
-
--
- /**
- * Measure the length of the given format string and arguments,
- * not including the terminating nul.
-diff --git a/dbus/dbus-sysdeps-util-unix.c b/dbus/dbus-sysdeps-util-unix.c
-index d8718c2..0b0badd 100644
---- a/dbus/dbus-sysdeps-util-unix.c
-+++ b/dbus/dbus-sysdeps-util-unix.c
-@@ -456,6 +456,44 @@ _dbus_change_to_daemon_user (const char *user,
- return FALSE;
- }
-
-+/**
-+ * Log an informative message. Intended for use primarily by
-+ * the system bus.
-+ *
-+ * @param msg a printf-style format string
-+ * @param args arguments for the format string
-+ */
-+void
-+_dbus_log_info (const char *msg, ...)
-+{
-+ va_list args;
-+
-+ va_start (args, msg);
-+
-+ vsyslog (LOG_DAEMON|LOG_NOTICE, msg, args);
-+
-+ va_end (args);
-+}
-+
-+/**
-+ * Log a security-related message. Intended for use primarily by
-+ * the system bus.
-+ *
-+ * @param msg a printf-style format string
-+ * @param args arguments for the format string
-+ */
-+void
-+_dbus_log_security (const char *msg, ...)
-+{
-+ va_list args;
-+
-+ va_start (args, msg);
-+
-+ vsyslog (LOG_AUTH|LOG_NOTICE, msg, args);
-+
-+ va_end (args);
-+}
-+
- /** Installs a UNIX signal handler
- *
- * @param sig the signal to handle
-diff --git a/dbus/dbus-sysdeps.h b/dbus/dbus-sysdeps.h
-index 469b5e5..1a67d0c 100644
---- a/dbus/dbus-sysdeps.h
-+++ b/dbus/dbus-sysdeps.h
-@@ -421,6 +421,9 @@ void _dbus_set_signal_handler (int sig,
- dbus_bool_t _dbus_user_at_console (const char *username,
- DBusError *error);
-
-+void _dbus_log_info (const char *msg, ...);
-+void _dbus_log_security (const char *msg, ...);
-+
- /* Define DBUS_VA_COPY() to do the right thing for copying va_list variables.
- * config.h may have already defined DBUS_VA_COPY as va_copy or __va_copy.
- */
---
-1.6.0.4
-
diff --git a/dbus-inotify-fd-leak.patch b/dbus-inotify-fd-leak.patch
deleted file mode 100644
index 99b30e2..0000000
--- a/dbus-inotify-fd-leak.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -u -r dbus-1.2.14/bus/dir-watch-inotify.c dbus-1.2.14.fd-leak/bus/dir-watch-inotify.c
---- dbus-1.2.14/bus/dir-watch-inotify.c 2009-04-17 15:45:29.000000000 -0400
-+++ dbus-1.2.14.fd-leak/bus/dir-watch-inotify.c 2009-06-27 18:38:54.966881736 -0400
-@@ -98,7 +98,11 @@
- _dbus_assert (dir != NULL);
-
- if (inotify_fd == -1) {
-+#ifdef HAVE_INOTIFY_INIT1
-+ inotify_fd = inotify_init1 (IN_CLOEXEC);
-+#else
- inotify_fd = inotify_init ();
-+#endif
- if (inotify_fd <= 0) {
- _dbus_warn ("Cannot initialize inotify\n");
- goto out;
-diff -u -r dbus-1.2.14/configure.in dbus-1.2.14.fd-leak/configure.in
---- dbus-1.2.14/configure.in 2009-05-06 12:51:19.000000000 -0400
-+++ dbus-1.2.14.fd-leak/configure.in 2009-06-27 18:37:10.787645299 -0400
-@@ -983,7 +983,7 @@
- dnl check if inotify backend is enabled
- if test x$have_inotify = xyes; then
- AC_DEFINE(DBUS_BUS_ENABLE_INOTIFY,1,[Use inotify])
--
-+ AC_CHECK_FUNCS(inotify_init1)
- fi
-
- AM_CONDITIONAL(DBUS_BUS_ENABLE_INOTIFY, test x$have_inotify = xyes)
diff --git a/dbus-libcap.patch b/dbus-libcap.patch
deleted file mode 100644
index efaf0b0..0000000
--- a/dbus-libcap.patch
+++ /dev/null
@@ -1,202 +0,0 @@
---- dbus-1.2.16.orig/bus/selinux.c 2009-11-01 09:58:22.000000000 -0500
-+++ dbus-1.2.16.orig/bus/selinux.c 2009-11-01 11:30:45.000000000 -0500
-@@ -1015,3 +1015,74 @@ bus_selinux_shutdown (void)
- #endif /* HAVE_SELINUX */
- }
-
-+/**
-+ * Changes the user and group the bus is running as.
-+ *
-+ * @param user the user to become
-+ * @param error return location for errors
-+ * @returns #FALSE on failure
-+ */
-+dbus_bool_t
-+_dbus_change_to_daemon_user (const char *user,
-+ DBusError *error)
-+{
-+ dbus_uid_t uid;
-+ dbus_gid_t gid;
-+ DBusString u;
-+
-+ _dbus_string_init_const (&u, user);
-+
-+ if (!_dbus_get_user_id_and_primary_group (&u, &uid, &gid))
-+ {
-+ dbus_set_error (error, DBUS_ERROR_FAILED,
-+ "User '%s' does not appear to exist?",
-+ user);
-+ return FALSE;
-+ }
-+
-+#ifdef HAVE_LIBAUDIT
-+ /* If we were root */
-+ if (_dbus_geteuid () == 0)
-+ {
-+ int rc;
-+
-+ capng_clear(CAPNG_SELECT_BOTH);
-+ capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED,
-+ CAP_AUDIT_WRITE);
-+ rc = capng_change_id(uid, gid, 0);
-+ if (rc)
-+ {
-+ switch (rc) {
-+ default:
-+ dbus_set_error (error, DBUS_ERROR_FAILED,
-+ "Failed to drop capabilities: %s\n",
-+ _dbus_strerror (errno));
-+ break;
-+ case -4:
-+ dbus_set_error (error, _dbus_error_from_errno (errno),
-+ "Failed to set GID to %lu: %s", gid,
-+ _dbus_strerror (errno));
-+ break;
-+ case -5:
-+ _dbus_warn ("Failed to drop supplementary groups: %s\n",
-+ _dbus_strerror (errno));
-+ break;
-+ case -6:
-+ dbus_set_error (error, _dbus_error_from_errno (errno),
-+ "Failed to set UID to %lu: %s", uid,
-+ _dbus_strerror (errno));
-+ break;
-+ case -7:
-+ dbus_set_error (error, _dbus_error_from_errno (errno),
-+ "Failed to unset keep-capabilities: %s\n",
-+ _dbus_strerror (errno));
-+ break;
-+ }
-+ return FALSE;
-+ }
-+ }
-+#endif /* HAVE_LIBAUDIT */
-+
-+ return TRUE;
-+}
-+
---- dbus-1.2.16.orig/bus/selinux.h 2009-11-01 09:58:22.000000000 -0500
-+++ dbus-1.2.16.orig/bus/selinux.h 2009-11-01 11:33:15.000000000 -0500
-@@ -68,5 +68,7 @@ BusSELinuxID* bus_selinux_init_connectio
-
-
- void bus_selinux_audit_init(void);
-+dbus_bool_t _dbus_change_to_daemon_user (const char *user,
-+ DBusError *error);
-
- #endif /* BUS_SELINUX_H */
---- dbus-1.2.16.orig/configure.in 2009-11-01 09:58:22.000000000 -0500
-+++ dbus-1.2.16.orig/configure.in 2009-11-01 11:30:45.000000000 -0500
-@@ -852,8 +852,7 @@ fi
- AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
-
- if test x$have_libaudit = xyes ; then
-- SELINUX_LIBS="$SELINUX_LIBS -laudit"
-- LIBS="-lcap-ng $LIBS"
-+ SELINUX_LIBS="$SELINUX_LIBS -laudit -lcap-ng"
- AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
- fi
-
---- dbus-1.2.16.orig/dbus/dbus-sysdeps.h 2009-11-01 09:58:22.000000000 -0500
-+++ dbus-1.2.16.orig/dbus/dbus-sysdeps.h 2009-11-01 11:33:08.000000000 -0500
-@@ -418,8 +418,6 @@ dbus_bool_t _dbus_become_daemon (const
- dbus_bool_t keep_umask);
-
- dbus_bool_t _dbus_verify_daemon_user (const char *user);
--dbus_bool_t _dbus_change_to_daemon_user (const char *user,
-- DBusError *error);
-
- dbus_bool_t _dbus_write_pid_to_file_and_pipe (const DBusString *pidfile,
- DBusPipe *print_pid_pipe,
---- dbus-1.2.16.orig/dbus/dbus-sysdeps-util-unix.c 2009-11-01 09:58:22.000000000 -0500
-+++ dbus-1.2.16.orig/dbus/dbus-sysdeps-util-unix.c 2009-11-01 11:30:45.000000000 -0500
-@@ -45,10 +45,6 @@
- #include
- #include
- #include
--#ifdef HAVE_LIBAUDIT
--#include
--#include
--#endif /* HAVE_LIBAUDIT */
-
- #ifdef HAVE_SYS_SYSLIMITS_H
- #include
-@@ -308,77 +304,6 @@ _dbus_verify_daemon_user (const char *us
- return _dbus_get_user_id_and_primary_group (&u, NULL, NULL);
- }
-
--/**
-- * Changes the user and group the bus is running as.
-- *
-- * @param user the user to become
-- * @param error return location for errors
-- * @returns #FALSE on failure
-- */
--dbus_bool_t
--_dbus_change_to_daemon_user (const char *user,
-- DBusError *error)
--{
-- dbus_uid_t uid;
-- dbus_gid_t gid;
-- DBusString u;
--
-- _dbus_string_init_const (&u, user);
--
-- if (!_dbus_get_user_id_and_primary_group (&u, &uid, &gid))
-- {
-- dbus_set_error (error, DBUS_ERROR_FAILED,
-- "User '%s' does not appear to exist?",
-- user);
-- return FALSE;
-- }
--
--#ifdef HAVE_LIBAUDIT
-- /* If we were root */
-- if (_dbus_geteuid () == 0)
-- {
-- int rc;
--
-- capng_clear(CAPNG_SELECT_BOTH);
-- capng_update(CAPNG_ADD, CAPNG_EFFECTIVE|CAPNG_PERMITTED,
-- CAP_AUDIT_WRITE);
-- rc = capng_change_id(uid, gid, 0);
-- if (rc)
-- {
-- switch (rc) {
-- default:
-- dbus_set_error (error, DBUS_ERROR_FAILED,
-- "Failed to drop capabilities: %s\n",
-- _dbus_strerror (errno));
-- break;
-- case -4:
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-- "Failed to set GID to %lu: %s", gid,
-- _dbus_strerror (errno));
-- break;
-- case -5:
-- _dbus_warn ("Failed to drop supplementary groups: %s\n",
-- _dbus_strerror (errno));
-- break;
-- case -6:
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-- "Failed to set UID to %lu: %s", uid,
-- _dbus_strerror (errno));
-- break;
-- case -7:
-- dbus_set_error (error, _dbus_error_from_errno (errno),
-- "Failed to unset keep-capabilities: %s\n",
-- _dbus_strerror (errno));
-- break;
-- }
-- return FALSE;
-- }
-- }
--#endif /* HAVE_LIBAUDIT */
--
-- return TRUE;
--}
--
- void
- _dbus_init_system_log (void)
- {
-
diff --git a/fix-daemon-activation.patch b/fix-daemon-activation.patch
deleted file mode 100644
index 6972ba7..0000000
--- a/fix-daemon-activation.patch
+++ /dev/null
@@ -1,310 +0,0 @@
-From 949a64b127a32a3e5a4ce4278773f18e290c44c2 Mon Sep 17 00:00:00 2001
-From: Colin Walters
-Date: Mon, 14 Dec 2009 23:12:24 +0000
-Subject: Ignore exit code zero from activated services
-
-A variety of system components have migrated from legacy init into DBus
-service activation. Many of these system components "daemonize", which
-involves forking. The DBus activation system treated an exit as an
-activation failure, assuming that the child process which grabbed the
-DBus name didn't run first.
-
-While we're in here, also differentiate in this code path between the
-servicehelper (system) versus direct activation (session) paths. In
-the session activation path our error message mentioned a helper
-process which was confusing, since none was involved.
-
-Based on a patch and debugging research from Ray Strode
----
-diff --git a/bus/activation.c b/bus/activation.c
-index 782ffed..00caac2 100644
---- a/bus/activation.c
-+++ b/bus/activation.c
-@@ -1212,8 +1212,8 @@ pending_activation_failed (BusPendingActivation *pending_activation,
- * Depending on the exit code of the helper, set the error accordingly
- */
- static void
--handle_activation_exit_error (int exit_code,
-- DBusError *error)
-+handle_servicehelper_exit_error (int exit_code,
-+ DBusError *error)
- {
- switch (exit_code)
- {
-@@ -1268,13 +1268,24 @@ babysitter_watch_callback (DBusWatch *watch,
- BusPendingActivation *pending_activation = data;
- dbus_bool_t retval;
- DBusBabysitter *babysitter;
-+ dbus_bool_t uses_servicehelper;
-
- babysitter = pending_activation->babysitter;
--
-+
- _dbus_babysitter_ref (babysitter);
--
-+
- retval = dbus_watch_handle (watch, condition);
-
-+ /* There are two major cases here; are we the system bus or the session? Here this
-+ * is distinguished by whether or not we use a setuid helper launcher. With the launch helper,
-+ * some process exit codes are meaningful, processed by handle_servicehelper_exit_error.
-+ *
-+ * In both cases though, just ignore when a process exits with status 0; it's possible for
-+ * a program to (misguidedly) "daemonize", and that appears to us as an exit. This closes a race
-+ * condition between this code and the child process claiming the bus name.
-+ */
-+ uses_servicehelper = bus_context_get_servicehelper (pending_activation->activation->context) != NULL;
-+
- /* FIXME this is broken in the same way that
- * connection watches used to be; there should be
- * a separate callback for status change, instead
-@@ -1284,43 +1295,59 @@ babysitter_watch_callback (DBusWatch *watch,
- * Fixing this lets us move dbus_watch_handle
- * calls into dbus-mainloop.c
- */
--
- if (_dbus_babysitter_get_child_exited (babysitter))
- {
- DBusError error;
- DBusHashIter iter;
--
-+ dbus_bool_t activation_failed;
-+ int exit_code = 0;
-+
- dbus_error_init (&error);
-+
- _dbus_babysitter_set_child_exit_error (babysitter, &error);
-
-- /* refine the error code if we got an exit code */
-- if (dbus_error_has_name (&error, DBUS_ERROR_SPAWN_CHILD_EXITED))
-- {
-- int exit_code = 0;
-- if (_dbus_babysitter_get_child_exit_status (babysitter, &exit_code))
-+ /* Explicitly check for SPAWN_CHILD_EXITED to avoid overwriting an
-+ * exec error */
-+ if (dbus_error_has_name (&error, DBUS_ERROR_SPAWN_CHILD_EXITED)
-+ && _dbus_babysitter_get_child_exit_status (babysitter, &exit_code))
-+ {
-+ activation_failed = exit_code != 0;
-+
-+ dbus_error_free(&error);
-+
-+ if (activation_failed)
- {
-- dbus_error_free (&error);
-- handle_activation_exit_error (exit_code, &error);
-+ if (uses_servicehelper)
-+ handle_servicehelper_exit_error (exit_code, &error);
-+ else
-+ _dbus_babysitter_set_child_exit_error (babysitter, &error);
- }
-- }
--
-- /* Destroy all pending activations with the same exec */
-- _dbus_hash_iter_init (pending_activation->activation->pending_activations,
-- &iter);
-- while (_dbus_hash_iter_next (&iter))
-+ }
-+ else
- {
-- BusPendingActivation *p = _dbus_hash_iter_get_value (&iter);
--
-- if (p != pending_activation && strcmp (p->exec, pending_activation->exec) == 0)
-- pending_activation_failed (p, &error);
-+ activation_failed = TRUE;
- }
--
-- /* Destroys the pending activation */
-- pending_activation_failed (pending_activation, &error);
-
-- dbus_error_free (&error);
-+ if (activation_failed)
-+ {
-+ /* Destroy all pending activations with the same exec */
-+ _dbus_hash_iter_init (pending_activation->activation->pending_activations,
-+ &iter);
-+ while (_dbus_hash_iter_next (&iter))
-+ {
-+ BusPendingActivation *p = _dbus_hash_iter_get_value (&iter);
-+
-+ if (p != pending_activation && strcmp (p->exec, pending_activation->exec) == 0)
-+ pending_activation_failed (p, &error);
-+ }
-+
-+ /* Destroys the pending activation */
-+ pending_activation_failed (pending_activation, &error);
-+
-+ dbus_error_free (&error);
-+ }
- }
--
-+
- _dbus_babysitter_unref (babysitter);
-
- return retval;
-diff --git a/configure.in b/configure.in
-index 7ef6632..1f2c896 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1499,6 +1499,7 @@ test/data/valid-config-files-system/debug-allow-all-pass.conf
- test/data/valid-config-files-system/debug-allow-all-fail.conf
- test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service
- test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service
-+test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service
- test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service
- test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
- test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
-diff --git a/test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service.in b/test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service.in
-new file mode 100644
-index 0000000..49fcac3
---- a/dev/null
-+++ b/test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service.in
-@@ -0,0 +1,3 @@
-+[D-BUS Service]
-+Name=org.freedesktop.DBus.TestSuiteForkingEchoService
-+Exec=@TEST_SERVICE_BINARY@ org.freedesktop.DBus.TestSuiteForkingEchoService fork
-diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am
-index 1c73b87..d8e72d1 100644
---- a/test/name-test/Makefile.am
-+++ b/test/name-test/Makefile.am
-@@ -10,7 +10,7 @@ else
- TESTS=
- endif
-
--EXTRA_DIST=run-test.sh run-test-systemserver.sh test-wait-for-echo.py
-+EXTRA_DIST=run-test.sh run-test-systemserver.sh test-wait-for-echo.py test-activation-forking.py
-
- if DBUS_BUILD_TESTS
-
-diff --git a/test/name-test/run-test.sh b/test/name-test/run-test.sh
-index fba4558..4eb2425 100755
---- a/test/name-test/run-test.sh
-+++ b/test/name-test/run-test.sh
-@@ -50,3 +50,9 @@ ${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-
-
- echo "running test-shutdown"
- ${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-shutdown || die "test-shutdown failed"
-+
-+echo "running test activation forking"
-+if ! python $DBUS_TOP_SRCDIR/test/name-test/test-activation-forking.py; then
-+ echo "Failed test-activation-forking"
-+ exit 1
-+fi
-diff --git a/test/name-test/test-activation-forking.py b/test/name-test/test-activation-forking.py
-new file mode 100644
-index 0000000..0d82075
---- a/dev/null
-+++ b/test/name-test/test-activation-forking.py
-@@ -0,0 +1,60 @@
-+#!/usr/bin/env python
-+
-+import os,sys
-+
-+try:
-+ import gobject
-+ import dbus
-+ import dbus.mainloop.glib
-+except:
-+ print "Failed import, aborting test"
-+ sys.exit(0)
-+
-+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
-+loop = gobject.MainLoop()
-+
-+exitcode = 0
-+
-+bus = dbus.SessionBus()
-+bus_iface = dbus.Interface(bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus'), 'org.freedesktop.DBus')
-+
-+o = bus.get_object('org.freedesktop.DBus.TestSuiteForkingEchoService', '/org/freedesktop/TestSuite')
-+i = dbus.Interface(o, 'org.freedesktop.TestSuite')
-+
-+# Start it up
-+reply = i.Echo("hello world")
-+print "TestSuiteForkingEchoService initial reply OK"
-+
-+def ignore(*args, **kwargs):
-+ pass
-+
-+# Now monitor for exits, when that happens, start it up again.
-+# The goal here is to try to hit any race conditions in activation.
-+counter = 0
-+def on_forking_echo_owner_changed(name, old, new):
-+ global counter
-+ global o
-+ global i
-+ if counter > 10:
-+ print "Activated 10 times OK, TestSuiteForkingEchoService pass"
-+ loop.quit()
-+ return
-+ counter += 1
-+ if new == '':
-+ o = bus.get_object('org.freedesktop.DBus.TestSuiteForkingEchoService', '/org/freedesktop/TestSuite')
-+ i = dbus.Interface(o, 'org.freedesktop.TestSuite')
-+ i.Echo("counter %r" % counter)
-+ i.Exit(reply_handler=ignore, error_handler=ignore)
-+
-+bus_iface.connect_to_signal('NameOwnerChanged', on_forking_echo_owner_changed, arg0='org.freedesktop.DBus.TestSuiteForkingEchoService')
-+
-+i.Exit(reply_handler=ignore, error_handler=ignore)
-+
-+def check_counter():
-+ if counter == 0:
-+ print "Failed to get NameOwnerChanged for TestSuiteForkingEchoService"
-+ sys.exit(1)
-+gobject.timeout_add(15000, check_counter)
-+
-+loop.run()
-+sys.exit(0)
-diff --git a/test/test-service.c b/test/test-service.c
-index c9f5839..a57bf9c 100644
---- a/test/test-service.c
-+++ b/test/test-service.c
-@@ -398,7 +398,33 @@ main (int argc,
- DBusError error;
- int result;
- DBusConnection *connection;
--
-+ const char *name;
-+ dbus_bool_t do_fork;
-+
-+ if (argc != 3)
-+ {
-+ name = "org.freedesktop.DBus.TestSuiteEchoService";
-+ do_fork = FALSE;
-+ }
-+ else
-+ {
-+ name = argv[1];
-+ do_fork = strcmp (argv[2], "fork") == 0;
-+ }
-+
-+ /* The bare minimum for simulating a program "daemonizing"; the intent
-+ * is to test services which move from being legacy init scripts to
-+ * activated services.
-+ * https://bugzilla.redhat.com/show_bug.cgi?id=545267
-+ */
-+ if (do_fork)
-+ {
-+ pid_t pid = fork ();
-+ if (pid != 0)
-+ exit (0);
-+ sleep (1);
-+ }
-+
- dbus_error_init (&error);
- connection = dbus_bus_get (DBUS_BUS_STARTER, &error);
- if (connection == NULL)
-@@ -433,8 +459,8 @@ main (int argc,
- if (d != (void*) 0xdeadbeef)
- die ("dbus_connection_get_object_path_data() doesn't seem to work right\n");
- }
--
-- result = dbus_bus_request_name (connection, "org.freedesktop.DBus.TestSuiteEchoService",
-+
-+ result = dbus_bus_request_name (connection, name,
- 0, &error);
- if (dbus_error_is_set (&error))
- {
---
-cgit v0.8.3-6-g21f6
diff --git a/fix-reload-leak.patch b/fix-reload-leak.patch
deleted file mode 100644
index 776678e..0000000
--- a/fix-reload-leak.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up dbus-1.2.16/bus/bus.c.policy-leak dbus-1.2.16/bus/bus.c
---- dbus-1.2.16/bus/bus.c.policy-leak 2009-12-17 19:18:50.966795963 -0500
-+++ dbus-1.2.16/bus/bus.c 2009-12-17 19:17:36.023796405 -0500
-@@ -438,6 +438,8 @@ process_config_every_time (BusContext
- /* get our limits and timeout lengths */
- bus_config_parser_get_limits (parser, &context->limits);
-
-+ if (context->policy)
-+ bus_policy_unref (context->policy);
- context->policy = bus_config_parser_steal_policy (parser);
- _dbus_assert (context->policy != NULL);
-
diff --git a/fix-reload-race.patch b/fix-reload-race.patch
deleted file mode 100644
index 2805479..0000000
--- a/fix-reload-race.patch
+++ /dev/null
@@ -1,215 +0,0 @@
---- dbus-1.2.16/bus/dir-watch-inotify.c 2009-07-14 13:06:31.000000000 -0400
-+++ hacked/bus/dir-watch-inotify.c 2009-12-18 00:46:05.524818800 -0500
-@@ -34,6 +34,7 @@
- #include
-
- #include
-+#include
- #include
- #include "dir-watch.h"
-
-@@ -43,6 +44,7 @@
-
- /* use a static array to avoid handling OOM */
- static int wds[MAX_DIRS_TO_WATCH];
-+static char *dirs[MAX_DIRS_TO_WATCH];
- static int num_wds = 0;
- static int inotify_fd = -1;
- static DBusWatch *watch = NULL;
-@@ -90,12 +92,10 @@
- return TRUE;
- }
-
--void
--bus_watch_directory (const char *dir, BusContext *context)
-+static int
-+_init_inotify (BusContext *context)
- {
-- int wd;
--
-- _dbus_assert (dir != NULL);
-+ int ret = 0;
-
- if (inotify_fd == -1) {
- #ifdef HAVE_INOTIFY_INIT1
-@@ -112,22 +112,38 @@
- watch = _dbus_watch_new (inotify_fd, DBUS_WATCH_READABLE, TRUE,
- _handle_inotify_watch, NULL, NULL);
-
-- if (watch == NULL)
-- {
-- _dbus_warn ("Unable to create inotify watch\n");
-- goto out;
-- }
--
-- if (!_dbus_loop_add_watch (loop, watch, _inotify_watch_callback,
-- NULL, NULL))
-- {
-- _dbus_warn ("Unable to add reload watch to main loop");
-- _dbus_watch_unref (watch);
-- watch = NULL;
-- goto out;
-- }
-+ if (watch == NULL)
-+ {
-+ _dbus_warn ("Unable to create inotify watch\n");
-+ goto out;
-+ }
-+
-+ if (!_dbus_loop_add_watch (loop, watch, _inotify_watch_callback,
-+ NULL, NULL))
-+ {
-+ _dbus_warn ("Unable to add reload watch to main loop");
-+ _dbus_watch_unref (watch);
-+ watch = NULL;
-+ goto out;
-+ }
- }
-
-+ ret = 1;
-+
-+out:
-+ return ret;
-+}
-+
-+void
-+bus_watch_directory (const char *dir, BusContext *context)
-+{
-+ int wd;
-+
-+ _dbus_assert (dir != NULL);
-+
-+ if (!_init_inotify (context))
-+ goto out;
-+
- if (num_wds >= MAX_DIRS_TO_WATCH )
- {
- _dbus_warn ("Cannot watch config directory '%s'. Already watching %d directories\n", dir, MAX_DIRS_TO_WATCH);
-@@ -141,6 +157,7 @@
- goto out;
- }
-
-+ dirs[num_wds] = strdup (dir);
- wds[num_wds++] = wd;
- _dbus_verbose ("Added watch on config directory '%s'\n", dir);
-
-@@ -148,7 +165,84 @@
- ;
- }
-
--void
-+void
-+bus_set_watched_dirs (BusContext *context, DBusList **directories)
-+{
-+ static int new_wds[MAX_DIRS_TO_WATCH];
-+ static char *new_dirs[MAX_DIRS_TO_WATCH];
-+ DBusList *link;
-+ int i, j, wd;
-+
-+ if (!_init_inotify (context))
-+ goto out;
-+
-+ for (i = 0; i < MAX_DIRS_TO_WATCH; i++)
-+ {
-+ new_wds[i] = -1;
-+ new_dirs[i] = NULL;
-+ }
-+
-+ i = 0;
-+ link = _dbus_list_get_first_link (directories);
-+ while (link != NULL)
-+ {
-+ new_dirs[i++] = (char *)link->data;
-+ link = _dbus_list_get_next_link (directories, link);
-+ }
-+
-+ for (i = 0; new_dirs[i]; i++)
-+ {
-+ for (j = 0; j < num_wds; j++)
-+ {
-+ if (dirs[j] && strcmp (new_dirs[i], dirs[j]) == 0)
-+ {
-+ new_wds[i] = wds[j];
-+ new_dirs[i] = dirs[j];
-+ wds[j] = -1;
-+ dirs[j] = NULL;
-+ break;
-+ }
-+ }
-+ }
-+
-+ for (j = 0; j < num_wds; j++)
-+ {
-+ if (wds[j] != -1)
-+ {
-+ inotify_rm_watch (inotify_fd, wds[j]);
-+ dbus_free (dirs[j]);
-+ wds[j] = -1;
-+ dirs[j] = NULL;
-+ }
-+ }
-+
-+ for (i = 0; new_dirs[i]; i++)
-+ {
-+ if (new_wds[i] == -1)
-+ {
-+ wd = inotify_add_watch (inotify_fd, new_dirs[i], IN_CLOSE_WRITE | IN_DELETE | IN_MOVED_TO | IN_MOVED_FROM);
-+ if (wd < 0)
-+ {
-+ _dbus_warn ("Cannot setup inotify for '%s'; error '%s'\n", new_dirs[i], _dbus_strerror (errno));
-+ goto out;
-+ }
-+ new_wds[i] = wd;
-+ new_dirs[i] = strdup (new_dirs[i]);
-+ }
-+ }
-+
-+ num_wds = i;
-+
-+ for (i = 0; i < MAX_DIRS_TO_WATCH; i++)
-+ {
-+ wds[i] = new_wds[i];
-+ dirs[i] = new_dirs[i];
-+ }
-+
-+ out:;
-+}
-+
-+void
- bus_drop_all_directory_watches (void)
- {
- int ret;
---- dbus-1.2.16/bus/dir-watch.h 2009-07-14 13:06:31.000000000 -0400
-+++ hacked/bus/dir-watch.h 2009-12-18 00:45:47.437818936 -0500
-@@ -32,4 +32,6 @@
- /* drop all the watches previously set up by bus_config_watch_directory (OS dependent, may be a NOP) */
- void bus_drop_all_directory_watches (void);
-
-+void bus_set_watched_dirs (BusContext *context, DBusList **dirs);
-+
- #endif /* DIR_WATCH_H */
---- dbus-1.2.16/bus/bus.c 2009-07-14 13:06:31.000000000 -0400
-+++ hacked/bus/bus.c 2009-12-18 00:51:30.348481884 -0500
-@@ -516,11 +516,6 @@
-
- context->activation = new_activation;
-
-- /* Drop existing conf-dir watches (if applicable) */
--
-- if (is_reload)
-- bus_drop_all_directory_watches ();
--
- _DBUS_ASSERT_ERROR_IS_CLEAR (error);
- retval = TRUE;
-
-@@ -551,9 +546,7 @@
- _dbus_hash_table_unref (service_context_table);
-
- /* Watch all conf directories */
-- _dbus_list_foreach (bus_config_parser_get_conf_dirs (parser),
-- (DBusForeachFunction) bus_watch_directory,
-- context);
-+ bus_set_watched_dirs (context, bus_config_parser_get_conf_dirs (parser));
-
- return TRUE;
- }
diff --git a/fix-timeout-accounting.patch b/fix-timeout-accounting.patch
deleted file mode 100644
index 7b48a26..0000000
--- a/fix-timeout-accounting.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-Index: dbus-1.2.16/dbus/dbus-connection.c
-===================================================================
---- dbus-1.2.16.orig/dbus/dbus-connection.c 2009-10-01 14:10:21.000000000 +0100
-+++ dbus-1.2.16/dbus/dbus-connection.c 2009-10-01 14:13:16.000000000 +0100
-@@ -2386,7 +2386,7 @@
- */
- _dbus_verbose ("dbus_connection_send_with_reply_and_block() waiting for more memory\n");
-
-- _dbus_memory_pause_based_on_timeout (timeout_milliseconds);
-+ _dbus_memory_pause_based_on_timeout (timeout_milliseconds - elapsed_milliseconds);
- }
- else
- {
-@@ -2394,7 +2394,7 @@
- _dbus_connection_do_iteration_unlocked (connection,
- DBUS_ITERATION_DO_READING |
- DBUS_ITERATION_BLOCK,
-- timeout_milliseconds);
-+ timeout_milliseconds - elapsed_milliseconds);
- }
-
- goto recheck_status;
-@@ -2403,9 +2403,7 @@
- _dbus_verbose ("dbus_connection_send_with_reply_and_block(): clock set backward\n");
- else if (elapsed_milliseconds < timeout_milliseconds)
- {
-- timeout_milliseconds -= elapsed_milliseconds;
-- _dbus_verbose ("dbus_connection_send_with_reply_and_block(): %d milliseconds remain\n", timeout_milliseconds);
-- _dbus_assert (timeout_milliseconds >= 0);
-+ _dbus_verbose ("dbus_connection_send_with_reply_and_block(): %d milliseconds remain\n", timeout_milliseconds - elapsed_milliseconds);
-
- if (status == DBUS_DISPATCH_NEED_MEMORY)
- {
-@@ -2415,7 +2413,7 @@
- */
- _dbus_verbose ("dbus_connection_send_with_reply_and_block() waiting for more memory\n");
-
-- _dbus_memory_pause_based_on_timeout (timeout_milliseconds);
-+ _dbus_memory_pause_based_on_timeout (timeout_milliseconds - elapsed_milliseconds);
- }
- else
- {
-@@ -2423,14 +2421,14 @@
- _dbus_connection_do_iteration_unlocked (connection,
- DBUS_ITERATION_DO_READING |
- DBUS_ITERATION_BLOCK,
-- timeout_milliseconds);
-+ timeout_milliseconds - elapsed_milliseconds);
- }
-
- goto recheck_status;
- }
-
- _dbus_verbose ("dbus_connection_send_with_reply_and_block(): Waited %ld milliseconds and got no reply\n",
-- (tv_sec - start_tv_sec) * 1000 + (tv_usec - start_tv_usec) / 1000);
-+ elapsed_milliseconds);
-
- _dbus_assert (!_dbus_pending_call_get_completed_unlocked (pending));
-
diff --git a/keep-pending-activations.patch b/keep-pending-activations.patch
deleted file mode 100644
index 40a6903..0000000
--- a/keep-pending-activations.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-diff -u -r dbus-1.2.16/bus/activation.c hacked/bus/activation.c
---- dbus-1.2.16/bus/activation.c 2009-07-14 13:06:31.000000000 -0400
-+++ hacked/bus/activation.c 2009-12-17 21:36:56.447546354 -0500
-@@ -736,6 +736,101 @@
- }
-
- BusActivation*
-+bus_activation_reload (BusActivation *activation,
-+ const DBusString *address,
-+ DBusList **directories,
-+ DBusError *error)
-+{
-+ DBusList *link;
-+ char *dir;
-+
-+ dbus_free (activation->server_address);
-+ if (!_dbus_string_copy_data (address, &activation->server_address))
-+ {
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ _dbus_hash_table_unref (activation->entries);
-+ activation->entries = _dbus_hash_table_new (DBUS_HASH_STRING, NULL,
-+ (DBusFreeFunction)bus_activation_entry_unref);
-+ if (activation->entries == NULL)
-+ {
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ _dbus_hash_table_unref (activation->directories);
-+ activation->directories = _dbus_hash_table_new (DBUS_HASH_STRING, NULL,
-+ (DBusFreeFunction)bus_service_directory_unref);
-+
-+ if (activation->directories == NULL)
-+ {
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ link = _dbus_list_get_first_link (directories);
-+ while (link != NULL)
-+ {
-+ BusServiceDirectory *s_dir;
-+
-+ dir = _dbus_strdup ((const char *) link->data);
-+ if (!dir)
-+ {
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ s_dir = dbus_new0 (BusServiceDirectory, 1);
-+ if (!s_dir)
-+ {
-+ dbus_free (dir);
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ s_dir->refcount = 1;
-+ s_dir->dir_c = dir;
-+
-+ s_dir->entries = _dbus_hash_table_new (DBUS_HASH_STRING, NULL,
-+ (DBusFreeFunction)bus_activation_entry_unref);
-+
-+ if (!s_dir->entries)
-+ {
-+ bus_service_directory_unref (s_dir);
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ if (!_dbus_hash_table_insert_string (activation->directories, s_dir->dir_c, s_dir))
-+ {
-+ bus_service_directory_unref (s_dir);
-+ BUS_SET_OOM (error);
-+ goto failed;
-+ }
-+
-+ /* only fail on OOM, it is ok if we can't read the directory */
-+ if (!update_directory (activation, s_dir, error))
-+ {
-+ if (dbus_error_has_name (error, DBUS_ERROR_NO_MEMORY))
-+ goto failed;
-+ else
-+ dbus_error_free (error);
-+ }
-+
-+ link = _dbus_list_get_next_link (directories, link);
-+ }
-+
-+ return activation;
-+
-+ failed:
-+ if (activation)
-+ bus_activation_unref (activation);
-+ return NULL;
-+}
-+
-+BusActivation*
- bus_activation_new (BusContext *context,
- const DBusString *address,
- DBusList **directories,
-diff -u -r dbus-1.2.16/bus/activation.h hacked/bus/activation.h
---- dbus-1.2.16/bus/activation.h 2009-07-14 13:06:31.000000000 -0400
-+++ hacked/bus/activation.h 2009-12-17 20:02:53.347545761 -0500
-@@ -32,6 +32,10 @@
- const DBusString *address,
- DBusList **directories,
- DBusError *error);
-+BusActivation* bus_activation_reload (BusActivation *activation,
-+ const DBusString *address,
-+ DBusList **directories,
-+ DBusError *error);
- BusActivation* bus_activation_ref (BusActivation *activation);
- void bus_activation_unref (BusActivation *activation);
-
-diff -u -r dbus-1.2.16/bus/bus.c hacked/bus/bus.c
---- dbus-1.2.16/bus/bus.c 2009-07-14 13:06:31.000000000 -0400
-+++ hacked/bus/bus.c 2009-12-17 20:04:08.006546566 -0500
-@@ -503,19 +503,17 @@
- }
-
- /* Create activation subsystem */
-- new_activation = bus_activation_new (context, &full_address,
-- dirs, error);
-- if (new_activation == NULL)
-+ if (context->activation)
-+ bus_activation_reload (context->activation, &full_address, dirs, error);
-+ else
-+ context->activation = bus_activation_new (context, &full_address, dirs, error);
-+
-+ if (context->activation == NULL)
- {
- _DBUS_ASSERT_ERROR_IS_SET (error);
- goto failed;
- }
-
-- if (is_reload)
-- bus_activation_unref (context->activation);
--
-- context->activation = new_activation;
--
- /* Drop existing conf-dir watches (if applicable) */
-
diff --git a/sources b/sources
index 09684ae..27efe63 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-9cdae6a52442b62ffa4861757b1635b0 dbus-1.2.16.tar.gz
+5c7e3e72e0ff0a3371eb310c6167fb87 dbus-1.2.18.tar.gz