libp2p 0.45.4 → 0.45.5-14aa40ff

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -372,7 +372,7 @@ class DefaultAutoNATService {
372
372
  }
373
373
  // they either told us which address worked/didn't work, or we only sent them one address
374
374
  const addr = dialResponse.addr == null ? multiaddrs[0] : multiaddr(dialResponse.addr);
375
- log('autonat response for %s is %s', addr, dialResponse.status);
375
+ log('autonat response for %a is %s', addr, dialResponse.status);
376
376
  if (dialResponse.status === Message.ResponseStatus.E_BAD_REQUEST) {
377
377
  // the remote could not parse our request
378
378
  continue;
@@ -386,7 +386,7 @@ class DefaultAutoNATService {
386
386
  continue;
387
387
  }
388
388
  if (!multiaddrs.some(ma => ma.equals(addr))) {
389
- log('peer reported %s as %s but it was not in our observed address list', addr, dialResponse.status);
389
+ log('peer reported %a as %s but it was not in our observed address list', addr, dialResponse.status);
390
390
  continue;
391
391
  }
392
392
  const addrStr = addr.toString();
@@ -401,13 +401,13 @@ class DefaultAutoNATService {
401
401
  }
402
402
  if (results[addrStr].success === REQUIRED_SUCCESSFUL_DIALS) {
403
403
  // we are now convinced
404
- log('%s is externally dialable', addr);
404
+ log('%a is externally dialable', addr);
405
405
  addressManager.confirmObservedAddr(addr);
406
406
  return;
407
407
  }
408
408
  if (results[addrStr].failure === REQUIRED_SUCCESSFUL_DIALS) {
409
409
  // we are now unconvinced
410
- log('%s is not externally dialable', addr);
410
+ log('%a is not externally dialable', addr);
411
411
  addressManager.removeObservedAddr(addr);
412
412
  return;
413
413
  }
@@ -1 +1 @@
1
- {"version":3,"file":"identify.d.ts","sourceRoot":"","sources":["../../../src/identify/identify.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhF,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,8BAA8B,CAAA;AAKtE,OAAO,KAAK,EAAE,kBAAkB,EAAa,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAoB7D,qBAAa,sBAAuB,YAAW,SAAS;;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,SAAgB,IAAI,EAAE;QACpB,eAAe,EAAE,MAAM,CAAA;QACvB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IAED,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAEtC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,mBAAmB;IA8C7E,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAgCvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACG,iBAAiB,CAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDlE;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IA6BtB,SAAS,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4CjF,QAAQ,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDlF;;;OAGG;IACG,eAAe,CAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/D;;OAEG;IACG,WAAW,CAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqG5D"}
1
+ {"version":3,"file":"identify.d.ts","sourceRoot":"","sources":["../../../src/identify/identify.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhF,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,8BAA8B,CAAA;AAKtE,OAAO,KAAK,EAAE,kBAAkB,EAAa,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAoB7D,qBAAa,sBAAuB,YAAW,SAAS;;IACtD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,SAAgB,IAAI,EAAE;QACpB,eAAe,EAAE,MAAM,CAAA;QACvB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;IAED,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAEtC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,mBAAmB;IA8C7E,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAgCvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACG,iBAAiB,CAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDlE;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IA6BtB,SAAS,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4CjF,QAAQ,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDlF;;;OAGG;IACG,eAAe,CAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/D;;OAEG;IACG,WAAW,CAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwH5D"}
@@ -341,65 +341,81 @@ export class DefaultIdentifyService {
341
341
  log('handled push from %p', connection.remotePeer);
342
342
  }
343
343
  async #consumeIdentifyMessage(remotePeer, message) {
344
+ log('received identify from %p', remotePeer);
344
345
  if (message == null) {
345
346
  throw new Error('Message was null or undefined');
346
347
  }
347
- log('received identify from %p', remotePeer);
348
- if (message.signedPeerRecord == null) {
349
- return;
350
- }
351
- let peerRecordEnvelope = message.signedPeerRecord;
352
- const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);
353
- let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);
354
- // Verify peerId
355
- if (!peerRecord.peerId.equals(envelope.peerId)) {
356
- throw new Error('signing key does not match PeerId in the PeerRecord');
357
- }
358
- // Make sure remote peer is the one sending the record
359
- if (!remotePeer.equals(peerRecord.peerId)) {
360
- throw new Error('signing key does not match remote PeerId');
361
- }
362
- let peer;
363
- try {
364
- peer = await this.peerStore.get(peerRecord.peerId);
365
- }
366
- catch (err) {
367
- if (err.code !== 'ERR_NOT_FOUND') {
368
- throw err;
348
+ const peer = {
349
+ addresses: message.listenAddrs.map(buf => ({
350
+ isCertified: false,
351
+ multiaddr: multiaddr(buf)
352
+ })),
353
+ protocols: message.protocols,
354
+ metadata: new Map(),
355
+ peerRecordEnvelope: message.signedPeerRecord
356
+ };
357
+ let output;
358
+ // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer
359
+ if (message.signedPeerRecord != null) {
360
+ log('received signedPeerRecord in push from %p', remotePeer);
361
+ let peerRecordEnvelope = message.signedPeerRecord;
362
+ const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN);
363
+ let peerRecord = PeerRecord.createFromProtobuf(envelope.payload);
364
+ // Verify peerId
365
+ if (!peerRecord.peerId.equals(envelope.peerId)) {
366
+ throw new Error('signing key does not match PeerId in the PeerRecord');
369
367
  }
370
- }
371
- log('received signedPeerRecord in push from %p', remotePeer);
372
- const metadata = peer?.metadata ?? new Map();
373
- if (peer?.peerRecordEnvelope != null) {
374
- const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope);
375
- const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
376
- // ensure seq is greater than, or equal to, the last received
377
- if (storedRecord.seqNumber >= peerRecord.seqNumber) {
378
- log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
379
- peerRecord = storedRecord;
380
- peerRecordEnvelope = peer.peerRecordEnvelope;
368
+ // Make sure remote peer is the one sending the record
369
+ if (!remotePeer.equals(peerRecord.peerId)) {
370
+ throw new Error('signing key does not match remote PeerId');
371
+ }
372
+ let existingPeer;
373
+ try {
374
+ existingPeer = await this.peerStore.get(peerRecord.peerId);
381
375
  }
376
+ catch (err) {
377
+ if (err.code !== 'ERR_NOT_FOUND') {
378
+ throw err;
379
+ }
380
+ }
381
+ if (existingPeer != null) {
382
+ // don't lose any existing metadata
383
+ peer.metadata = existingPeer.metadata;
384
+ // if we have previously received a signed record for this peer, compare it to the incoming one
385
+ if (existingPeer.peerRecordEnvelope != null) {
386
+ const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope);
387
+ const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload);
388
+ // ensure seq is greater than, or equal to, the last received
389
+ if (storedRecord.seqNumber >= peerRecord.seqNumber) {
390
+ log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber);
391
+ peerRecord = storedRecord;
392
+ peerRecordEnvelope = existingPeer.peerRecordEnvelope;
393
+ }
394
+ }
395
+ }
396
+ // store the signed record for next time
397
+ peer.peerRecordEnvelope = peerRecordEnvelope;
398
+ // override the stored addresses with the signed multiaddrs
399
+ peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({
400
+ isCertified: true,
401
+ multiaddr
402
+ }));
403
+ output = {
404
+ seq: peerRecord.seqNumber,
405
+ addresses: peerRecord.multiaddrs
406
+ };
407
+ }
408
+ else {
409
+ log('%p did not send a signed peer record', remotePeer);
382
410
  }
383
411
  if (message.agentVersion != null) {
384
- metadata.set('AgentVersion', uint8ArrayFromString(message.agentVersion));
412
+ peer.metadata.set('AgentVersion', uint8ArrayFromString(message.agentVersion));
385
413
  }
386
414
  if (message.protocolVersion != null) {
387
- metadata.set('ProtocolVersion', uint8ArrayFromString(message.protocolVersion));
415
+ peer.metadata.set('ProtocolVersion', uint8ArrayFromString(message.protocolVersion));
388
416
  }
389
- await this.peerStore.patch(peerRecord.peerId, {
390
- peerRecordEnvelope,
391
- protocols: message.protocols,
392
- addresses: peerRecord.multiaddrs.map(multiaddr => ({
393
- isCertified: true,
394
- multiaddr
395
- })),
396
- metadata
397
- });
398
- log('consumed signedPeerRecord sent in push from %p', remotePeer);
399
- return {
400
- seq: peerRecord.seqNumber,
401
- addresses: peerRecord.multiaddrs
402
- };
417
+ await this.peerStore.patch(remotePeer, peer);
418
+ return output;
403
419
  }
404
420
  }
405
421
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/identify/identify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/identify/identify.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export declare const version = "0.45.4";
1
+ export declare const version = "0.45.5-14aa40ff";
2
2
  export declare const name = "libp2p";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAA;AAC/B,eAAO,MAAM,IAAI,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,oBAAoB,CAAA;AACxC,eAAO,MAAM,IAAI,WAAW,CAAA"}
@@ -1,3 +1,3 @@
1
- export const version = '0.45.4';
1
+ export const version = '0.45.5-14aa40ff';
2
2
  export const name = 'libp2p';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAA;AACxC,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.45.4",
3
+ "version": "0.45.5-14aa40ff",
4
4
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p#readme",
@@ -115,12 +115,13 @@
115
115
  "test:chrome-webworker": "aegir test -t webworker -f \"./dist/test/**/*.spec.js\"",
116
116
  "test:firefox": "aegir test -t browser -f \"./dist/test/**/*.spec.js\" -- --browser firefox",
117
117
  "test:firefox-webworker": "aegir test -t webworker -f \"./dist/test/**/*.spec.js\" -- --browser firefox",
118
+ "test:webkit": "aegir test -t browser -f \"./dist/test/**/*.spec.js\" -- --browser webkit",
118
119
  "test:examples": "cd examples && npm run test:all",
119
120
  "test:interop": "aegir test -t node -f dist/test/interop.js"
120
121
  },
121
122
  "dependencies": {
122
123
  "@achingbrain/nat-port-mapper": "^1.0.3",
123
- "@libp2p/crypto": "^1.0.4",
124
+ "@libp2p/crypto": "^1.0.17",
124
125
  "@libp2p/interface-address-manager": "^3.0.0",
125
126
  "@libp2p/interface-connection": "^5.0.0",
126
127
  "@libp2p/interface-connection-encrypter": "^4.0.0",
@@ -142,7 +143,7 @@
142
143
  "@libp2p/interface-transport": "^4.0.0",
143
144
  "@libp2p/interfaces": "^3.2.0",
144
145
  "@libp2p/keychain": "^2.0.0",
145
- "@libp2p/logger": "^2.0.1",
146
+ "@libp2p/logger": "^2.1.1",
146
147
  "@libp2p/multistream-select": "^3.1.8",
147
148
  "@libp2p/peer-collections": "^3.0.0",
148
149
  "@libp2p/peer-id": "^2.0.0",
@@ -508,7 +508,7 @@ class DefaultAutoNATService implements Startable {
508
508
  // they either told us which address worked/didn't work, or we only sent them one address
509
509
  const addr = dialResponse.addr == null ? multiaddrs[0] : multiaddr(dialResponse.addr)
510
510
 
511
- log('autonat response for %s is %s', addr, dialResponse.status)
511
+ log('autonat response for %a is %s', addr, dialResponse.status)
512
512
 
513
513
  if (dialResponse.status === Message.ResponseStatus.E_BAD_REQUEST) {
514
514
  // the remote could not parse our request
@@ -526,7 +526,7 @@ class DefaultAutoNATService implements Startable {
526
526
  }
527
527
 
528
528
  if (!multiaddrs.some(ma => ma.equals(addr))) {
529
- log('peer reported %s as %s but it was not in our observed address list', addr, dialResponse.status)
529
+ log('peer reported %a as %s but it was not in our observed address list', addr, dialResponse.status)
530
530
  continue
531
531
  }
532
532
 
@@ -544,14 +544,14 @@ class DefaultAutoNATService implements Startable {
544
544
 
545
545
  if (results[addrStr].success === REQUIRED_SUCCESSFUL_DIALS) {
546
546
  // we are now convinced
547
- log('%s is externally dialable', addr)
547
+ log('%a is externally dialable', addr)
548
548
  addressManager.confirmObservedAddr(addr)
549
549
  return
550
550
  }
551
551
 
552
552
  if (results[addrStr].failure === REQUIRED_SUCCESSFUL_DIALS) {
553
553
  // we are now unconvinced
554
- log('%s is not externally dialable', addr)
554
+ log('%a is not externally dialable', addr)
555
555
  addressManager.removeObservedAddr(addr)
556
556
  return
557
557
  }
@@ -429,79 +429,98 @@ export class DefaultIdentifyService implements Startable {
429
429
  }
430
430
 
431
431
  async #consumeIdentifyMessage (remotePeer: PeerId, message: Identify): Promise<SignedPeerRecord | undefined> {
432
+ log('received identify from %p', remotePeer)
433
+
432
434
  if (message == null) {
433
435
  throw new Error('Message was null or undefined')
434
436
  }
435
437
 
436
- log('received identify from %p', remotePeer)
437
-
438
- if (message.signedPeerRecord == null) {
439
- return
438
+ const peer = {
439
+ addresses: message.listenAddrs.map(buf => ({
440
+ isCertified: false,
441
+ multiaddr: multiaddr(buf)
442
+ })),
443
+ protocols: message.protocols,
444
+ metadata: new Map(),
445
+ peerRecordEnvelope: message.signedPeerRecord
440
446
  }
441
447
 
442
- let peerRecordEnvelope = message.signedPeerRecord
443
- const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN)
444
- let peerRecord = PeerRecord.createFromProtobuf(envelope.payload)
448
+ let output: SignedPeerRecord | undefined
445
449
 
446
- // Verify peerId
447
- if (!peerRecord.peerId.equals(envelope.peerId)) {
448
- throw new Error('signing key does not match PeerId in the PeerRecord')
449
- }
450
+ // if the peer record has been sent, prefer the addresses in the record as they are signed by the remote peer
451
+ if (message.signedPeerRecord != null) {
452
+ log('received signedPeerRecord in push from %p', remotePeer)
450
453
 
451
- // Make sure remote peer is the one sending the record
452
- if (!remotePeer.equals(peerRecord.peerId)) {
453
- throw new Error('signing key does not match remote PeerId')
454
- }
454
+ let peerRecordEnvelope = message.signedPeerRecord
455
+ const envelope = await RecordEnvelope.openAndCertify(peerRecordEnvelope, PeerRecord.DOMAIN)
456
+ let peerRecord = PeerRecord.createFromProtobuf(envelope.payload)
455
457
 
456
- let peer: Peer | undefined
458
+ // Verify peerId
459
+ if (!peerRecord.peerId.equals(envelope.peerId)) {
460
+ throw new Error('signing key does not match PeerId in the PeerRecord')
461
+ }
457
462
 
458
- try {
459
- peer = await this.peerStore.get(peerRecord.peerId)
460
- } catch (err: any) {
461
- if (err.code !== 'ERR_NOT_FOUND') {
462
- throw err
463
+ // Make sure remote peer is the one sending the record
464
+ if (!remotePeer.equals(peerRecord.peerId)) {
465
+ throw new Error('signing key does not match remote PeerId')
466
+ }
467
+
468
+ let existingPeer: Peer | undefined
469
+
470
+ try {
471
+ existingPeer = await this.peerStore.get(peerRecord.peerId)
472
+ } catch (err: any) {
473
+ if (err.code !== 'ERR_NOT_FOUND') {
474
+ throw err
475
+ }
463
476
  }
464
- }
465
477
 
466
- log('received signedPeerRecord in push from %p', remotePeer)
467
- const metadata = peer?.metadata ?? new Map()
478
+ if (existingPeer != null) {
479
+ // don't lose any existing metadata
480
+ peer.metadata = existingPeer.metadata
468
481
 
469
- if (peer?.peerRecordEnvelope != null) {
470
- const storedEnvelope = await RecordEnvelope.createFromProtobuf(peer.peerRecordEnvelope)
471
- const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload)
482
+ // if we have previously received a signed record for this peer, compare it to the incoming one
483
+ if (existingPeer.peerRecordEnvelope != null) {
484
+ const storedEnvelope = await RecordEnvelope.createFromProtobuf(existingPeer.peerRecordEnvelope)
485
+ const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload)
472
486
 
473
- // ensure seq is greater than, or equal to, the last received
474
- if (storedRecord.seqNumber >= peerRecord.seqNumber) {
475
- log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber)
476
- peerRecord = storedRecord
477
- peerRecordEnvelope = peer.peerRecordEnvelope
487
+ // ensure seq is greater than, or equal to, the last received
488
+ if (storedRecord.seqNumber >= peerRecord.seqNumber) {
489
+ log('sequence number was lower or equal to existing sequence number - stored: %d received: %d', storedRecord.seqNumber, peerRecord.seqNumber)
490
+ peerRecord = storedRecord
491
+ peerRecordEnvelope = existingPeer.peerRecordEnvelope
492
+ }
493
+ }
478
494
  }
495
+
496
+ // store the signed record for next time
497
+ peer.peerRecordEnvelope = peerRecordEnvelope
498
+
499
+ // override the stored addresses with the signed multiaddrs
500
+ peer.addresses = peerRecord.multiaddrs.map(multiaddr => ({
501
+ isCertified: true,
502
+ multiaddr
503
+ }))
504
+
505
+ output = {
506
+ seq: peerRecord.seqNumber,
507
+ addresses: peerRecord.multiaddrs
508
+ }
509
+ } else {
510
+ log('%p did not send a signed peer record', remotePeer)
479
511
  }
480
512
 
481
513
  if (message.agentVersion != null) {
482
- metadata.set('AgentVersion', uint8ArrayFromString(message.agentVersion))
514
+ peer.metadata.set('AgentVersion', uint8ArrayFromString(message.agentVersion))
483
515
  }
484
516
 
485
517
  if (message.protocolVersion != null) {
486
- metadata.set('ProtocolVersion', uint8ArrayFromString(message.protocolVersion))
518
+ peer.metadata.set('ProtocolVersion', uint8ArrayFromString(message.protocolVersion))
487
519
  }
488
520
 
489
- await this.peerStore.patch(peerRecord.peerId, {
490
- peerRecordEnvelope,
491
- protocols: message.protocols,
492
- addresses: peerRecord.multiaddrs.map(multiaddr => ({
493
- isCertified: true,
494
- multiaddr
495
- })),
496
- metadata
497
- })
498
-
499
- log('consumed signedPeerRecord sent in push from %p', remotePeer)
521
+ await this.peerStore.patch(remotePeer, peer)
500
522
 
501
- return {
502
- seq: peerRecord.seqNumber,
503
- addresses: peerRecord.multiaddrs
504
- }
523
+ return output
505
524
  }
506
525
  }
507
526
 
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '0.45.4'
1
+ export const version = '0.45.5-14aa40ff'
2
2
  export const name = 'libp2p'
@@ -1,58 +0,0 @@
1
- {
2
- "AutoNATComponents": "https://libp2p.github.io/js-libp2p/interfaces/autonat.AutoNATComponents.html",
3
- "AutoNATServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/autonat.AutoNATServiceInit.html",
4
- "autoNATService": "https://libp2p.github.io/js-libp2p/functions/autonat.autoNATService.html",
5
- "codec": "https://libp2p.github.io/js-libp2p/functions/circuit_relay._internal_.Limit.codec.html",
6
- "decode": "https://libp2p.github.io/js-libp2p/functions/circuit_relay._internal_.Limit.decode.html",
7
- "encode": "https://libp2p.github.io/js-libp2p/functions/circuit_relay._internal_.Limit.encode.html",
8
- "AdvertServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.AdvertServiceComponents.html",
9
- "AdvertServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.AdvertServiceInit.html",
10
- "CircuitRelayServerComponents": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.CircuitRelayServerComponents.html",
11
- "CircuitRelayServerInit": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.CircuitRelayServerInit.html",
12
- "CircuitRelayTransportComponents": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.CircuitRelayTransportComponents.html",
13
- "CircuitRelayTransportInit": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.CircuitRelayTransportInit.html",
14
- "Limit": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.Limit-1.html",
15
- "RelayDiscoveryComponents": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.RelayDiscoveryComponents.html",
16
- "RelayStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.RelayStoreInit.html",
17
- "ReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay._internal_.ReservationStoreInit.html",
18
- "CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay.CircuitRelayService.html",
19
- "CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay.CircuitRelayServiceEvents.html",
20
- "RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/circuit_relay.RelayReservation.html",
21
- "circuitRelayServer": "https://libp2p.github.io/js-libp2p/functions/circuit_relay.circuitRelayServer.html",
22
- "circuitRelayTransport": "https://libp2p.github.io/js-libp2p/functions/circuit_relay.circuitRelayTransport.html",
23
- "FetchService": "https://libp2p.github.io/js-libp2p/interfaces/fetch.FetchService.html",
24
- "FetchServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/fetch.FetchServiceComponents.html",
25
- "FetchServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/fetch.FetchServiceInit.html",
26
- "HandleMessageOptions": "https://libp2p.github.io/js-libp2p/interfaces/fetch.HandleMessageOptions.html",
27
- "LookupFunction": "https://libp2p.github.io/js-libp2p/interfaces/fetch.LookupFunction.html",
28
- "fetchService": "https://libp2p.github.io/js-libp2p/functions/fetch.fetchService-1.html",
29
- "DefaultIdentifyService": "https://libp2p.github.io/js-libp2p/classes/identify._internal_.DefaultIdentifyService.html",
30
- "Identify": "https://libp2p.github.io/js-libp2p/interfaces/identify._internal_.Identify-1.html",
31
- "IdentifyServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/identify.IdentifyServiceComponents.html",
32
- "IdentifyServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/identify.IdentifyServiceInit.html",
33
- "Message": "https://libp2p.github.io/js-libp2p/variables/identify.Message.html",
34
- "multicodecs": "https://libp2p.github.io/js-libp2p/variables/identify.multicodecs.html",
35
- "identifyService": "https://libp2p.github.io/js-libp2p/functions/identify.identifyService.html",
36
- "AddressFilter": "https://libp2p.github.io/js-libp2p/interfaces/index._internal_.AddressFilter.html",
37
- "AddressManagerInit": "https://libp2p.github.io/js-libp2p/interfaces/index._internal_.AddressManagerInit.html",
38
- "Components": "https://libp2p.github.io/js-libp2p/interfaces/index._internal_.Components.html",
39
- "ConnectionManagerInit": "https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerInit.html",
40
- "TransportManagerInit": "https://libp2p.github.io/js-libp2p/interfaces/index._internal_.TransportManagerInit.html",
41
- "Libp2pInit": "https://libp2p.github.io/js-libp2p/interfaces/index.Libp2pInit.html",
42
- "Libp2pOptions": "https://libp2p.github.io/js-libp2p/types/index.Libp2pOptions.html",
43
- "ServiceFactoryMap": "https://libp2p.github.io/js-libp2p/types/index.ServiceFactoryMap.html",
44
- "createLibp2p": "https://libp2p.github.io/js-libp2p/functions/index.createLibp2p.html",
45
- "plaintext": "https://libp2p.github.io/js-libp2p/functions/insecure.plaintext.html",
46
- "PingService": "https://libp2p.github.io/js-libp2p/interfaces/ping.PingService.html",
47
- "PingServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/ping.PingServiceComponents.html",
48
- "PingServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/ping.PingServiceInit.html",
49
- "pingService": "https://libp2p.github.io/js-libp2p/functions/ping.pingService-1.html",
50
- "ProtectorInit": "https://libp2p.github.io/js-libp2p/interfaces/pnet.ProtectorInit.html",
51
- "generateKey": "https://libp2p.github.io/js-libp2p/functions/pnet.generateKey.html",
52
- "preSharedKey": "https://libp2p.github.io/js-libp2p/functions/pnet.preSharedKey.html",
53
- "UPnPNAT": "https://libp2p.github.io/js-libp2p/classes/upnp_nat._internal_.UPnPNAT.html",
54
- "PMPOptions": "https://libp2p.github.io/js-libp2p/interfaces/upnp_nat.PMPOptions.html",
55
- "UPnPNATComponents": "https://libp2p.github.io/js-libp2p/interfaces/upnp_nat.UPnPNATComponents.html",
56
- "UPnPNATInit": "https://libp2p.github.io/js-libp2p/interfaces/upnp_nat.UPnPNATInit.html",
57
- "uPnPNATService": "https://libp2p.github.io/js-libp2p/functions/upnp_nat.uPnPNATService.html"
58
- }