diff --git a/0001-dbus-Fix-object-path-regression-from-GDBus-port.patch b/0001-dbus-Fix-object-path-regression-from-GDBus-port.patch new file mode 100644 index 0000000..17135bb --- /dev/null +++ b/0001-dbus-Fix-object-path-regression-from-GDBus-port.patch @@ -0,0 +1,67 @@ +From 7840cb97902c952c34831cc63dcba00ececabd0c Mon Sep 17 00:00:00 2001 +From: Stef Walter +Date: Fri, 16 Oct 2015 22:46:07 +0200 +Subject: [PATCH] dbus: Fix object path regression from GDBus port + +Previously objects were only explicitly exported on the bus when +they were ready. However now due to GDBus handler connections +they are exported earlier. + +Make sure to export a prompt object before something is exported +at the same object path to take its place. + +https://bugzilla.gnome.org/show_bug.cgi?id=756032 +--- + daemon/dbus/gkd-secret-create.c | 1 + + daemon/dbus/gkd-secret-prompt.c | 10 ++++++++++ + daemon/dbus/gkd-secret-prompt.h | 3 +++ + 3 files changed, 14 insertions(+) + +diff --git a/daemon/dbus/gkd-secret-create.c b/daemon/dbus/gkd-secret-create.c +index 0f2b573..cd5587b 100644 +--- a/daemon/dbus/gkd-secret-create.c ++++ b/daemon/dbus/gkd-secret-create.c +@@ -176,6 +176,7 @@ unlock_or_complete_this_prompt (GkdSecretCreate *self) + + g_object_ref (self); + prompt = GKD_SECRET_PROMPT (self); ++ gkd_secret_prompt_unexport (prompt); + + unlock = gkd_secret_unlock_new (gkd_secret_prompt_get_service (prompt), + gkd_secret_prompt_get_caller (prompt), +diff --git a/daemon/dbus/gkd-secret-prompt.c b/daemon/dbus/gkd-secret-prompt.c +index 207cc8a..f0a6d63 100644 +--- a/daemon/dbus/gkd-secret-prompt.c ++++ b/daemon/dbus/gkd-secret-prompt.c +@@ -202,6 +202,16 @@ gkd_secret_prompt_constructed (GObject *obj) + G_CALLBACK (prompt_method_prompt), self); + } + ++void ++gkd_secret_prompt_unexport (GkdSecretPrompt *self) ++{ ++ g_return_if_fail (self->pv->skeleton != NULL); ++ g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (self->pv->skeleton)); ++ g_signal_handlers_disconnect_by_func (self->pv->skeleton, prompt_method_dismiss, self); ++ g_signal_handlers_disconnect_by_func (self->pv->skeleton, prompt_method_prompt, self); ++ g_clear_object (&self->pv->skeleton); ++} ++ + static void + gkd_secret_prompt_init (GkdSecretPrompt *self) + { +diff --git a/daemon/dbus/gkd-secret-prompt.h b/daemon/dbus/gkd-secret-prompt.h +index 0b52ea0..a133f25 100644 +--- a/daemon/dbus/gkd-secret-prompt.h ++++ b/daemon/dbus/gkd-secret-prompt.h +@@ -77,4 +77,7 @@ void gkd_secret_prompt_dismiss (GkdSecretPrompt * + void gkd_secret_prompt_dismiss_with_error (GkdSecretPrompt *self, + GError *error); + ++/* Used by derived classes */ ++void gkd_secret_prompt_unexport (GkdSecretPrompt *self); ++ + #endif /* __GKD_SECRET_PROMPT_H__ */ +-- +2.5.0 + diff --git a/gnome-keyring.spec b/gnome-keyring.spec index b779629..dd20c0a 100644 --- a/gnome-keyring.spec +++ b/gnome-keyring.spec @@ -5,13 +5,16 @@ Summary: Framework for managing passwords and other secrets Name: gnome-keyring Version: 3.18.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ and LGPLv2+ Group: System Environment/Libraries #VCS: git:git://git.gnome.org/gnome-keyring Source: https://download.gnome.org/sources/%{name}/3.18/%{name}-%{version}.tar.xz URL: https://wiki.gnome.org/Projects/GnomeKeyring +# Backported from upstream +Patch0: 0001-dbus-Fix-object-path-regression-from-GDBus-port.patch + BuildRequires: pkgconfig(gcr-3) >= %{gcr_version} BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} BuildRequires: pkgconfig(p11-kit-1) @@ -49,6 +52,7 @@ automatically unlock the "login" keyring when the user logs in. %prep %setup -q -n gnome-keyring-%{version} +%patch0 -p1 %build %configure \ @@ -105,6 +109,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas >&/dev/null || : %changelog +* Sat Oct 17 2015 Kalev Lember - 3.18.1-2 +- dbus: Fix object path regression from GDBus port + * Sat Oct 17 2015 Kalev Lember - 3.18.1-1 - Update to 3.18.1 - Drop unused dbus build dependency