aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/inpage-provider.js
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-11-18 06:05:12 +0800
committerDan Finlay <dan@danfinlay.com>2016-11-18 06:05:12 +0800
commit8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed (patch)
tree975275cc991cdc4f2a0b8decd2db4f429e2f9096 /app/scripts/lib/inpage-provider.js
parentb0ccde66f62ae69c5818ddd43e22fb517f8f13e2 (diff)
downloadtangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.tar
tangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.tar.gz
tangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.tar.bz2
tangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.tar.lz
tangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.tar.xz
tangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.tar.zst
tangerine-wallet-browser-8eb91e89bf62fd835d5e59bd01ac54e0df7c22ed.zip
Increment tx ids to avoid collisions
Fixes #791 It was possible for two requests to have the same ID, causing a crash and loss of StreamProvider connection. This new id generation strategy creates a random ID, and increments it for each request. In case the id generator is included from two different processes, I'm initializing the counter at a random number, and rolling it over a large number when it gets too big.
Diffstat (limited to 'app/scripts/lib/inpage-provider.js')
-rw-r--r--app/scripts/lib/inpage-provider.js11
1 files changed, 1 insertions, 10 deletions
diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js
index 052a8f5fe..f1ba2e0ed 100644
--- a/app/scripts/lib/inpage-provider.js
+++ b/app/scripts/lib/inpage-provider.js
@@ -2,6 +2,7 @@ const Streams = require('mississippi')
const StreamProvider = require('web3-stream-provider')
const ObjectMultiplex = require('./obj-multiplex')
const RemoteStore = require('./remote-store.js').RemoteStore
+const createRandomId = require('./random-id')
module.exports = MetamaskInpageProvider
@@ -119,16 +120,6 @@ function remoteStoreWithLocalStorageCache (storageKey) {
return store
}
-function createRandomId(){
- const extraDigits = 3
- // 13 time digits
- const datePart = new Date().getTime() * Math.pow(10, extraDigits)
- // 3 random digits
- const extraPart = Math.floor(Math.random() * Math.pow(10, extraDigits))
- // 16 digits
- return datePart + extraPart
-}
-
function eachJsonMessage(payload, transformFn){
if (Array.isArray(payload)) {
return payload.map(transformFn)