diff options
author | kumavis <kumavis@users.noreply.github.com> | 2018-06-13 04:07:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-13 04:07:19 +0800 |
commit | 0740dd6a5b89defd5f5ba27fa38c7004243f0ce2 (patch) | |
tree | 6643b1457d2e9ef0961c434a885c0c53f0cb9548 /app/scripts/metamask-controller.js | |
parent | 77dc75c9b1889699fe44db1fbcda4587d58bd665 (diff) | |
parent | 604289c96cde7e5f4634fe5e76a50dfa9174fcbd (diff) | |
download | tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.tar tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.tar.gz tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.tar.bz2 tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.tar.lz tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.tar.xz tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.tar.zst tangerine-wallet-browser-0740dd6a5b89defd5f5ba27fa38c7004243f0ce2.zip |
Merge pull request #4557 from MetaMask/nonce-tracker-mutex-fix
Bug: Mutex locks not released on error
Diffstat (limited to 'app/scripts/metamask-controller.js')
-rw-r--r-- | app/scripts/metamask-controller.js | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index a362e3826..e444180cc 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -436,28 +436,24 @@ module.exports = class MetamaskController extends EventEmitter { * @returns {Object} vault */ async createNewVaultAndKeychain (password) { - const release = await this.createVaultMutex.acquire() - let vault - + const releaseLock = await this.createVaultMutex.acquire() try { + let vault const accounts = await this.keyringController.getAccounts() - if (accounts.length > 0) { vault = await this.keyringController.fullUpdate() - } else { vault = await this.keyringController.createNewVaultAndKeychain(password) const accounts = await this.keyringController.getAccounts() this.preferencesController.setAddresses(accounts) this.selectFirstIdentity() } - release() + releaseLock() + return vault } catch (err) { - release() + releaseLock() throw err } - - return vault } /** @@ -466,7 +462,7 @@ module.exports = class MetamaskController extends EventEmitter { * @param {} seed */ async createNewVaultAndRestore (password, seed) { - const release = await this.createVaultMutex.acquire() + const releaseLock = await this.createVaultMutex.acquire() try { // clear known identities this.preferencesController.setAddresses([]) @@ -476,10 +472,10 @@ module.exports = class MetamaskController extends EventEmitter { const accounts = await this.keyringController.getAccounts() this.preferencesController.setAddresses(accounts) this.selectFirstIdentity() - release() + releaseLock() return vault } catch (err) { - release() + releaseLock() throw err } } |