From 9672a5db24766eebedbcf47e2ebfff24f52ea084 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Mon, 31 Oct 2022 20:08:40 +0100 Subject: [PATCH 1/2] libsecret: skip if there is no secret service running In case libsecret and its Python bindings are available the libsecret backend will get selected. This doesn't mean though that the system service it connects to is available. This leads to the backend being used and then failing, for example in get_credential() with: g-dbus-error-quark: The name org.freedesktop.secrets is unknown (2) To avoid this ask libsecret to connect to the system service first before considering to use it. Fixes #600 --- keyring/backends/libsecret.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/keyring/backends/libsecret.py b/keyring/backends/libsecret.py index c97e0d33..cf16dbec 100644 --- a/keyring/backends/libsecret.py +++ b/keyring/backends/libsecret.py @@ -7,7 +7,6 @@ from ..errors import ( PasswordDeleteError, PasswordSetError, - ExceptionRaisedContext, KeyringLocked, ) @@ -50,10 +49,15 @@ def collection(self): @properties.classproperty def priority(cls): - with ExceptionRaisedContext() as exc: - Secret.__name__ - if exc: + if not available: raise RuntimeError("libsecret required") + + # Make sure there is actually a secret service running + try: + Secret.Service.get_sync(Secret.ServiceFlags.OPEN_SESSION, None) + except GLib.Error as error: + raise RuntimeError("Can't open a session to the secret service") from error + return 4.8 def get_password(self, service, username): From c3eb39b17dc6e83cd396f17823129747a0e89be4 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 4 Nov 2022 17:14:20 -0400 Subject: [PATCH 2/2] Update changelog --- CHANGES.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 57daae65..912d571f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +v23.11.0 +-------- + +* #603: In ``libsecret``, check that the service is available before + declaring viability. + v23.10.0 --------