From 5da63fda26f153a3af149abb405b7856b356bf7b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 30 Nov 2021 13:27:32 +0100 Subject: [PATCH] Also catch BlockingIOError when getting a keyring attribute This occurs when there's a timeout, on some systems, when asking for the password to the keyring. We'll interpret a timeout as a refusal to enter a password. Fixes Sentry issue CURA-332. --- cura/OAuth2/KeyringAttribute.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/OAuth2/KeyringAttribute.py b/cura/OAuth2/KeyringAttribute.py index a8c60de994..35ffdcbd24 100644 --- a/cura/OAuth2/KeyringAttribute.py +++ b/cura/OAuth2/KeyringAttribute.py @@ -2,6 +2,7 @@ # Cura is released under the terms of the LGPLv3 or higher. from typing import Type, TYPE_CHECKING, Optional, List +from io import BlockingIOError import keyring from keyring.backend import KeyringBackend from keyring.errors import NoKeyringError, PasswordSetError, KeyringLocked @@ -44,7 +45,7 @@ class KeyringAttribute: self._store_secure = False Logger.logException("w", "No keyring backend present") return getattr(instance, self._name) - except KeyringLocked: + except (KeyringLocked, BlockingIOError): self._store_secure = False Logger.log("i", "Access to the keyring was denied.") return getattr(instance, self._name)