diff --git a/lib/plugins.py b/lib/plugins.py index 53a940d8b..406c5df03 100644 --- a/lib/plugins.py +++ b/lib/plugins.py @@ -356,7 +356,6 @@ class DeviceMgr(ThreadJob, PrintError): _id = self.xpub_ids.pop(xpub) client = self.client_lookup(_id) self.clients.pop(client, None) - #wallet.unpaired() if client: client.close() @@ -369,7 +368,6 @@ class DeviceMgr(ThreadJob, PrintError): def pair_xpub(self, xpub, id_): with self.lock: self.xpub_ids[xpub] = id_ - #wallet.paired() def client_lookup(self, id_): with self.lock: @@ -407,7 +405,8 @@ class DeviceMgr(ThreadJob, PrintError): def force_pair_xpub(self, plugin, handler, xpub, derivation, devices): # The wallet has not been previously paired, so let the user # choose an unpaired device and compare its first address. - info = self.select_device(handler, plugin, devices) + with self.lock: + info = self.select_device(handler, plugin, devices) client = self.client_lookup(info.device.id_) if client and client.is_pairable(): # See comment above for same code diff --git a/plugins/hw_wallet/plugin.py b/plugins/hw_wallet/plugin.py index 045acc6ad..7a56f6573 100644 --- a/plugins/hw_wallet/plugin.py +++ b/plugins/hw_wallet/plugin.py @@ -48,7 +48,6 @@ class HW_PluginBase(BasePlugin): @hook def close_wallet(self, wallet): - keystore = wallet.get_keystore() - if isinstance(keystore, self.keystore_class): - self.device_manager().unpair_xpub(keystore.xpub) - + for keystore in wallet.get_keystores(): + if isinstance(keystore, self.keystore_class): + self.device_manager().unpair_xpub(keystore.xpub)