Skip to content

Commit 75d224b

Browse files
committed
devp2p -> connection reliability: RLPx type improvements
1 parent 5ac5bc7 commit 75d224b

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

packages/devp2p/src/rlpx/peer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ export class Peer extends EventEmitter {
529529
break
530530
}
531531
} catch (err) {
532+
this.disconnect(DISCONNECT_REASONS.SUBPROTOCOL_ERROR)
532533
debug(`Error on peer socket data handling: ${err}`)
533534
this.emit('error', err)
534535
}

packages/devp2p/src/rlpx/rlpx.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,11 @@ export class RLPx extends EventEmitter {
8080
if (this._getOpenSlots() > 0) return this._connectToPeer(peer)
8181
this._peersQueue.push({ peer: peer, ts: 0 }) // save to queue
8282
})
83-
this._dpt.on('peer:removed', (peer: any) => {
83+
this._dpt.on('peer:removed', (peer: PeerInfo) => {
8484
// remove from queue
85-
this._peersQueue = this._peersQueue.filter((item: any) => !item.peer.id.equals(peer.id))
85+
this._peersQueue = this._peersQueue.filter(
86+
(item) => !(item.peer.id! as Buffer).equals(peer.id as Buffer)
87+
)
8688
})
8789
}
8890

@@ -259,12 +261,12 @@ export class RLPx extends EventEmitter {
259261
_refillConnections() {
260262
if (!this._isAlive()) return
261263
debug(
262-
`refill connections.. queue size: ${this._peersQueue.length}, peers: ${
263-
this._peers.size
264+
`refill connections.. peers: ${this._peers.size}, queue size: ${
265+
this._peersQueue.length
264266
}, open slots: ${this._getOpenSlots()}`
265267
)
266268

267-
this._peersQueue = this._peersQueue.filter((item: any) => {
269+
this._peersQueue = this._peersQueue.filter((item) => {
268270
if (this._getOpenSlots() === 0) return true
269271
if (item.ts > Date.now()) return true
270272

packages/devp2p/src/util.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { randomBytes } from 'crypto'
33
import { privateKeyVerify, publicKeyConvert } from 'secp256k1'
44
import createKeccakHash from 'keccak'
55
import { decode } from 'rlp'
6+
import { ETH } from './eth'
7+
import { LES } from './les'
68

79
export function keccak256(...buffers: Buffer[]) {
810
const buffer = Buffer.concat(buffers)
@@ -53,7 +55,14 @@ export function xor(a: Buffer, b: any): Buffer {
5355
return buffer
5456
}
5557

56-
export function assertEq(expected: any, actual: any, msg: string, debug: any): void {
58+
type assertInput = Buffer | Buffer[] | ETH.StatusMsg | LES.Status | number | null
59+
60+
export function assertEq(
61+
expected: assertInput,
62+
actual: assertInput,
63+
msg: string,
64+
debug: Function
65+
): void {
5766
let message
5867
if (Buffer.isBuffer(expected) && Buffer.isBuffer(actual)) {
5968
if (expected.equals(actual)) return

0 commit comments

Comments
 (0)