diff --git a/lib/NetworkInterface.js b/lib/NetworkInterface.js index c2b470b..dd93959 100644 --- a/lib/NetworkInterface.js +++ b/lib/NetworkInterface.js @@ -428,6 +428,15 @@ NetworkInterface.prototype.stop = function () { this._sockets = []; this._buffers = []; + var intf = this; + + // Remove any entries from active interfaces. + Object.keys(activeInterfaces).forEach(function (name) { + if (activeInterfaces[name] === intf) { + delete activeInterfaces[name]; + } + }); + debug('Done.'); }; diff --git a/src/NetworkInterface.js b/src/NetworkInterface.js index d342e4c..fc5f654 100644 --- a/src/NetworkInterface.js +++ b/src/NetworkInterface.js @@ -421,6 +421,15 @@ NetworkInterface.prototype.stop = function() { this._sockets = []; this._buffers = []; + const intf = this; + + // Remove any entries from active interfaces. + Object.keys(activeInterfaces).forEach((name) => { + if (activeInterfaces[name] === intf) { + delete activeInterfaces[name]; + } + }); + debug('Done.'); }; diff --git a/test/tests/NetworkInterface.test.js b/test/tests/NetworkInterface.test.js index 4fd7225..ec02c83 100644 --- a/test/tests/NetworkInterface.test.js +++ b/test/tests/NetworkInterface.test.js @@ -604,6 +604,15 @@ describe('NetworkInterface', function() { intf._sockets = [socket]; intf.stop(); }); + + it.only('should remove interface from active interfaces cache', function() { + const intf = new NetworkInterface.get(); + + intf.stop(); + const newIntf = new NetworkInterface.get(); + + expect(newIntf).to.not.equal(intf) + }); }); });