Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit 8dd9f3b

Browse files
committed
fix: race condition
1 parent 09220b9 commit 8dd9f3b

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

src/index.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,16 @@ class FloodSub extends EventEmitter {
133133
const subs = rpc.subscriptions
134134
const msgs = rpc.msgs
135135

136-
if (subs && subs.length) {
137-
const peer = this.peers.get(idB58Str)
138-
peer.updateSubscriptions(subs)
139-
}
140-
141136
if (msgs && msgs.length) {
142137
this._processRpcMessages(rpc.msgs)
143138
}
139+
140+
if (subs && subs.length) {
141+
const peer = this.peers.get(idB58Str)
142+
if (peer) {
143+
peer.updateSubscriptions(subs)
144+
}
145+
}
144146
}
145147

146148
_processRpcMessages (msgs) {
@@ -311,7 +313,7 @@ class FloodSub extends EventEmitter {
311313
if (peer.isWritable) {
312314
peer.sendSubscriptions(topics)
313315
} else {
314-
setTimeout(checkIfReady.bind(peer), 100)
316+
setImmediate(checkIfReady.bind(peer))
315317
}
316318
}
317319
}

test/2-nodes.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const utils = require('./utils')
1414
const first = utils.first
1515
const createNode = utils.createNode
1616
const expectSet = utils.expectSet
17+
const Buffer = require('safe-buffer').Buffer
1718

1819
describe('basics between 2 nodes', () => {
1920
describe('fresh nodes', () => {
@@ -70,7 +71,7 @@ describe('basics between 2 nodes', () => {
7071
expect(fsA.peers.size).to.equal(1)
7172
expect(fsB.peers.size).to.equal(1)
7273
cb()
73-
}, 250)
74+
}, 1000)
7475
], done)
7576
})
7677

@@ -232,7 +233,7 @@ describe('basics between 2 nodes', () => {
232233
expectSet(first(fsA.peers).topics, ['Zb'])
233234

234235
done()
235-
}, 250)
236+
}, 1000)
236237
})
237238
})
238239

@@ -293,13 +294,11 @@ describe('basics between 2 nodes', () => {
293294
expect(fsA.peers.size).to.equal(1)
294295
expect(fsB.peers.size).to.equal(1)
295296

296-
fsA.stop(() => {
297-
setTimeout(() => {
298-
expect(fsB.peers.size).to.equal(0)
299-
done()
300-
}, 250)
301-
})
302-
}, 250)
297+
fsA.stop(() => setTimeout(() => {
298+
expect(fsB.peers.size).to.equal(0)
299+
done()
300+
}, 250))
301+
}, 1000)
303302
})
304303
})
305304
})

0 commit comments

Comments
 (0)