Browse Source

Qt change_password_dialog: fix deadlock in hww case if device unplugged

fixes https://github.com/spesmilo/electrum/pull/7819
patch-4
SomberNight 3 years ago
parent
commit
8ed52d4225
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 28
      electrum/gui/qt/main_window.py

28
electrum/gui/qt/main_window.py

@ -2562,25 +2562,27 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
if not ok: if not ok:
return return
try: def on_password(hw_dev_pw):
hw_dev_pw = self.wallet.keystore.get_password_for_storage_encryption() old_password = hw_dev_pw if self.wallet.has_password() else None
except UserCancelled: new_password = hw_dev_pw if encrypt_file else None
return self._update_wallet_password(
except BaseException as e: old_password=old_password, new_password=new_password, encrypt_storage=encrypt_file)
self.logger.exception('')
self.show_error(repr(e)) self.thread.add(
return self.wallet.keystore.get_password_for_storage_encryption,
old_password = hw_dev_pw if self.wallet.has_password() else None on_success=on_password)
new_password = hw_dev_pw if encrypt_file else None
else: else:
from .password_dialog import ChangePasswordDialogForSW from .password_dialog import ChangePasswordDialogForSW
d = ChangePasswordDialogForSW(self, self.wallet) d = ChangePasswordDialogForSW(self, self.wallet)
ok, old_password, new_password, encrypt_file = d.run() ok, old_password, new_password, encrypt_file = d.run()
if not ok:
return
self._update_wallet_password(
old_password=old_password, new_password=new_password, encrypt_storage=encrypt_file)
if not ok: def _update_wallet_password(self, *, old_password, new_password, encrypt_storage: bool):
return
try: try:
self.wallet.update_password(old_password, new_password, encrypt_storage=encrypt_file) self.wallet.update_password(old_password, new_password, encrypt_storage=encrypt_storage)
except InvalidPassword as e: except InvalidPassword as e:
self.show_error(str(e)) self.show_error(str(e))
return return

Loading…
Cancel
Save