1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Merge pull request #1474 from MetaMask/i1458-StreamingSubprovider

Fix filter polling leak
This commit is contained in:
kumavis 2017-05-22 16:19:51 -07:00 committed by GitHub
commit 8520fe5afe
3 changed files with 20 additions and 6 deletions

View File

@ -2,6 +2,8 @@
## Current Master ## Current Master
- Fix bug where website filters would pile up and not deallocate when leaving a site.
## 3.6.5 2017-5-17 ## 3.6.5 2017-5-17
- Fix bug where edited gas parameters would not take effect. - Fix bug where edited gas parameters would not take effect.

View File

@ -1,5 +1,7 @@
const pipe = require('pump') const pipe = require('pump')
const StreamProvider = require('web3-stream-provider') const ProviderEngine = require('web3-provider-engine')
const FilterSubprovider = require('web3-provider-engine/subproviders/filters')
const StreamSubprovider = require('web3-provider-engine/subproviders/stream')
const LocalStorageStore = require('obs-store') const LocalStorageStore = require('obs-store')
const ObjectMultiplex = require('./obj-multiplex') const ObjectMultiplex = require('./obj-multiplex')
const createRandomId = require('./random-id') const createRandomId = require('./random-id')
@ -27,14 +29,24 @@ function MetamaskInpageProvider (connectionStream) {
) )
// connect to async provider // connect to async provider
const asyncProvider = self.asyncProvider = new StreamProvider() const engine = new ProviderEngine()
const filterSubprovider = new FilterSubprovider()
engine.addProvider(filterSubprovider)
const streamSubprovider = new StreamSubprovider()
engine.addProvider(streamSubprovider)
pipe( pipe(
asyncProvider, streamSubprovider,
multiStream.createStream('provider'), multiStream.createStream('provider'),
asyncProvider, streamSubprovider,
(err) => logStreamDisconnectWarning('MetaMask RpcProvider', err) (err) => logStreamDisconnectWarning('MetaMask RpcProvider', err)
) )
// start polling
engine.start()
self.idMap = {} self.idMap = {}
// handle sendAsync requests via asyncProvider // handle sendAsync requests via asyncProvider
self.sendAsync = function (payload, cb) { self.sendAsync = function (payload, cb) {
@ -46,7 +58,7 @@ function MetamaskInpageProvider (connectionStream) {
return message return message
}) })
// forward to asyncProvider // forward to asyncProvider
asyncProvider.sendAsync(request, function (err, res) { engine.sendAsync(request, function (err, res) {
if (err) return cb(err) if (err) return cb(err)
// transform messages to original ids // transform messages to original ids
eachJsonMessage(res, (message) => { eachJsonMessage(res, (message) => {

View File

@ -121,7 +121,7 @@
"valid-url": "^1.0.9", "valid-url": "^1.0.9",
"vreme": "^3.0.2", "vreme": "^3.0.2",
"web3": "0.18.2", "web3": "0.18.2",
"web3-provider-engine": "^12.0.6", "web3-provider-engine": "^12.1.0",
"web3-stream-provider": "^2.0.6", "web3-stream-provider": "^2.0.6",
"xtend": "^4.0.1" "xtend": "^4.0.1"
}, },