From 1732fa8b5ae5b276a6b42b0948e1fb3e8085e351 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Fri, 23 Apr 2021 16:10:49 +0200 Subject: [PATCH 1/3] fix: do not republish self key twice --- packages/ipfs-core/src/ipns/republisher.js | 3 +++ packages/ipfs-core/test/name.spec.js | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/ipfs-core/src/ipns/republisher.js b/packages/ipfs-core/src/ipns/republisher.js index e419ab8884..93ca682dac 100644 --- a/packages/ipfs-core/src/ipns/republisher.js +++ b/packages/ipfs-core/src/ipns/republisher.js @@ -138,6 +138,9 @@ class IpnsRepublisher { const keys = await this._keychain.listKeys() for (const key of keys) { + if (key.name === 'self') { + continue + } const pem = await this._keychain.exportKey(key.name, pass) const privKey = await crypto.keys.import(pem, pass) diff --git a/packages/ipfs-core/test/name.spec.js b/packages/ipfs-core/test/name.spec.js index b972915225..5295960fd2 100644 --- a/packages/ipfs-core/test/name.spec.js +++ b/packages/ipfs-core/test/name.spec.js @@ -50,6 +50,26 @@ describe('name', function () { expect(republisher._republishEntries.calledTwice).to.equal(true) }) + it('should not republish self key twice', async function () { + const mockKeychain = { + listKeys: () => Promise.resolve([{ name: 'self' }]) + } + republisher = new IpnsRepublisher(sinon.stub(), sinon.stub(), sinon.stub(), mockKeychain, { + initialBroadcastInterval: 500, + broadcastInterval: 1000, + pass: 'pass' + }) + republisher._republishEntry = sinon.stub() + + await republisher.start() + + expect(republisher._republishEntry.calledOnce).to.equal(false) + + // Initial republish should happen after ~500ms + await delay(750) + expect(republisher._republishEntry.calledOnce).to.equal(true) + }) + it('should error if run republish again', async () => { republisher = new IpnsRepublisher(sinon.stub(), sinon.stub(), sinon.stub(), sinon.stub(), { initialBroadcastInterval: 50, From 7c911a3f2dcd40f3676a3bc4aa1f80dff14b9292 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Tue, 27 Apr 2021 18:31:59 +0200 Subject: [PATCH 2/3] chore: decrease brodcast initial delay --- packages/ipfs-core/test/name.spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ipfs-core/test/name.spec.js b/packages/ipfs-core/test/name.spec.js index 5295960fd2..35bc0da247 100644 --- a/packages/ipfs-core/test/name.spec.js +++ b/packages/ipfs-core/test/name.spec.js @@ -55,7 +55,7 @@ describe('name', function () { listKeys: () => Promise.resolve([{ name: 'self' }]) } republisher = new IpnsRepublisher(sinon.stub(), sinon.stub(), sinon.stub(), mockKeychain, { - initialBroadcastInterval: 500, + initialBroadcastInterval: 100, broadcastInterval: 1000, pass: 'pass' }) @@ -65,8 +65,8 @@ describe('name', function () { expect(republisher._republishEntry.calledOnce).to.equal(false) - // Initial republish should happen after ~500ms - await delay(750) + // Initial republish should happen after ~100ms + await delay(200) expect(republisher._republishEntry.calledOnce).to.equal(true) }) From 4c7f53a0b2584106a8f04f2a32536f7768c151c9 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Tue, 27 Apr 2021 18:37:45 +0200 Subject: [PATCH 3/3] chore: decrease other test timers --- packages/ipfs-core/test/name.spec.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/ipfs-core/test/name.spec.js b/packages/ipfs-core/test/name.spec.js index 35bc0da247..5612f9ec51 100644 --- a/packages/ipfs-core/test/name.spec.js +++ b/packages/ipfs-core/test/name.spec.js @@ -32,8 +32,8 @@ describe('name', function () { it('should republish entries', async function () { republisher = new IpnsRepublisher(sinon.stub(), sinon.stub(), sinon.stub(), sinon.stub(), { - initialBroadcastInterval: 500, - broadcastInterval: 1000 + initialBroadcastInterval: 200, + broadcastInterval: 500 }) republisher._republishEntries = sinon.stub() @@ -41,12 +41,12 @@ describe('name', function () { expect(republisher._republishEntries.calledOnce).to.equal(false) - // Initial republish should happen after ~500ms - await delay(750) + // Initial republish should happen after ~200ms + await delay(300) expect(republisher._republishEntries.calledOnce).to.equal(true) - // Subsequent republishes should happen after ~1500ms - await delay(1000) + // Subsequent republishes should happen after ~700 + await delay(600) expect(republisher._republishEntries.calledTwice).to.equal(true) })