Skip to content

Commit

Permalink
Merge pull request #3773 from ethereum/fix/metamask-issue
Browse files Browse the repository at this point in the history
Rename close event to disconnect
  • Loading branch information
GregTheGreek committed Nov 16, 2020
2 parents ee8bec9 + ad58a2a commit 942161c
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 25 deletions.
15 changes: 9 additions & 6 deletions packages/web3-core-requestmanager/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ RequestManager.prototype.setProvider = function (provider, net) {
});

// notify all subscriptions about bad close conditions
this.provider.on('close', function close(event) {
const disconnect = function disconnect(event) {
if (!_this._isCleanCloseEvent(event) || _this._isIpcCloseError(event)) {
_this.subscriptions.forEach(function (subscription) {
subscription.callback(errors.ConnectionCloseError(event));
Expand All @@ -136,7 +136,10 @@ RequestManager.prototype.setProvider = function (provider, net) {
if (_this.provider && _this.provider.emit) {
_this.provider.emit('end', event);
}
});
};
// TODO: Remove close once the standard allows it
this.provider.on('close', disconnect);
this.provider.on('disconnect', disconnect);

// TODO add end, timeout??
}
Expand Down Expand Up @@ -257,7 +260,7 @@ RequestManager.prototype.removeSubscription = function (id, callback) {
* Should be called to reset the subscriptions
*
* @method reset
*
*
* @returns {boolean}
*/
RequestManager.prototype.clearSubscriptions = function (keepIsSyncing) {
Expand Down Expand Up @@ -310,12 +313,12 @@ RequestManager.prototype._isIpcCloseError = function (event) {

/**
* The jsonrpc result callback for RequestManager.send
*
*
* @method _jsonrpcResultCallback
*
*
* @param {Function} callback the callback to use
* @param {Object} payload the jsonrpc payload
*
*
* @returns {Function} return callback of form (err, result)
*
*/
Expand Down
5 changes: 4 additions & 1 deletion test/3_givenProvider-ganache.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ describe('web.providers.givenProvider (ganache)', function(){
assert.equal(1, web3.currentProvider.listenerCount('data'))
assert.equal(1, web3.currentProvider.listenerCount('connect'))
assert.equal(1, web3.currentProvider.listenerCount('error'))
assert.equal(1, web3.currentProvider.listenerCount('close'))
// TODO: Remove close once the standard allows it
assert(
web3.currentProvider.listenerCount("disconnect") === 1 || web3.currentProvider.listenerCount("close") === 1
);
});

it('deploys a contract', async function(){
Expand Down
12 changes: 6 additions & 6 deletions test/eth.subscribe.ganache.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,12 +242,12 @@ describe('subscription connect/reconnect', function () {
.once('data', async function () {
await pify(server.close)();
})
.on('error', function (err) {
counter++;
assert(err.message.includes('CONNECTION ERROR'));
assert(err.message.includes('close code `1006`'));
assert(err.message.includes('Connection dropped by remote peer.'));
});

web3.eth.currentProvider.on('close', function (err) {
counter++;
assert(err.reason.includes('Connection dropped by remote peer.'));
assert(err.code === 1006);
});

// Make sure error handler doesn't fire twice
await waitSeconds(2);
Expand Down
24 changes: 12 additions & 12 deletions test/websocket.ganache.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ describe('WebsocketProvider (ganache)', function () {
await web3.eth.getBlockNumber();

await new Promise(async function(resolve){
web3.currentProvider.once('error', function(err){
assert(err.message.includes('Connection dropped by remote peer.'))
assert(err.message.includes('1006'));
web3.currentProvider.on('close', function (err) {
assert(err.reason.includes('Connection dropped by remote peer.'));
assert(err.code === 1006);
resolve();
});

Expand All @@ -64,9 +64,9 @@ describe('WebsocketProvider (ganache)', function () {
await web3.eth.getBlockNumber();

await new Promise(async function(resolve){
web3.currentProvider.once('error', function(err){
assert(err.message.includes('1012'));
assert(err.message.includes('restart'));
web3.currentProvider.on('close', function (err) {
assert(err.reason.includes('restart'));
assert(err.code === 1012);
resolve();
});

Expand Down Expand Up @@ -106,9 +106,9 @@ describe('WebsocketProvider (ganache)', function () {
await web3.eth.getBlockNumber();

await new Promise(async function(resolve){
web3.currentProvider.once('end', function(event){
assert.equal(event.type, 'close');
assert.equal(event.wasClean, false);
web3.currentProvider.on('close', function (err) {
assert.equal(err.type, 'close');
assert.equal(err.wasClean, false);
resolve();
});

Expand All @@ -127,9 +127,9 @@ describe('WebsocketProvider (ganache)', function () {
await web3.eth.getBlockNumber();

await new Promise(async function(resolve){
web3.currentProvider.once('end', function(event){
assert.equal(event.type, 'close');
assert.equal(event.wasClean, true);
web3.currentProvider.on('close', function (err) {
assert.equal(err.type, 'close');
assert.equal(err.wasClean, true);
resolve();
});

Expand Down

0 comments on commit 942161c

Please sign in to comment.