Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions src/service/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ export class Discv5 extends (EventEmitter as { new (): Discv5EventEmitter }) {
const { enr, peerId, multiaddr, config = {}, metricsRegistry, transport } = opts;
const fullConfig = { ...defaultConfig, ...config };
const metrics = metricsRegistry ? createDiscv5Metrics(metricsRegistry) : undefined;
const decodedEnr = typeof enr === "string" ? ENR.decodeTxt(enr) : enr;
const decodedEnr = decodeENR(enr);
const rateLimiter = opts.rateLimiterOpts && new RateLimiter(opts.rateLimiterOpts, metrics ?? null);
const sessionService = new SessionService(
fullConfig,
Expand Down Expand Up @@ -272,14 +272,8 @@ export class Discv5 extends (EventEmitter as { new (): Discv5EventEmitter }) {
* without having to dial them upfront.
*/
public addEnr(enr: ENRInput): void {
let decodedEnr: ENR;
try {
decodedEnr = typeof enr === "string" ? ENR.decodeTxt(enr) : enr;
decodedEnr.encode();
} catch (e) {
log("Unable to add enr: %o", enr);
return;
}
const decodedEnr = decodeENR(enr);

if (this.kbuckets.insertOrUpdate(decodedEnr, EntryStatus.Disconnected) === InsertResult.Inserted) {
this.emit("enrAdded", decodedEnr);
}
Expand Down Expand Up @@ -1033,3 +1027,16 @@ export class Discv5 extends (EventEmitter as { new (): Discv5EventEmitter }) {
this.connectionUpdated(nodeId, { type: ConnectionStatusType.Disconnected });
};
}

function decodeENR(enr: ENRInput): ENR {
if (typeof enr === "string") {
try {
return ENR.decodeTxt(enr);
} catch (e) {
(e as Error).message = `Ìnvalid ENR ${enr}: ${(e as Error).message}`;
throw e;
}
} else {
return enr;
}
}