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.
This commit is contained in:
Ghostkeeper 2021-11-30 13:27:32 +01:00
parent 2f999ca399
commit 5da63fda26
No known key found for this signature in database
GPG key ID: D2A8871EE34EC59A

View file

@ -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)