Qt change_password_dialog: fix deadlock in hww case if device unplugged
fixes https://github.com/spesmilo/electrum/pull/7819
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user