@matter/protocol 0.12.0-alpha.0-20250108-7ae2a767d → 0.12.0-alpha.0-20250112-2972cf298

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.
Files changed (59) hide show
  1. package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -1
  2. package/dist/cjs/interaction/ServerSubscription.js +7 -3
  3. package/dist/cjs/interaction/ServerSubscription.js.map +1 -1
  4. package/dist/cjs/mdns/MdnsBroadcaster.d.ts +3 -3
  5. package/dist/cjs/mdns/MdnsBroadcaster.d.ts.map +1 -1
  6. package/dist/cjs/mdns/MdnsBroadcaster.js +55 -31
  7. package/dist/cjs/mdns/MdnsBroadcaster.js.map +1 -1
  8. package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -1
  9. package/dist/cjs/mdns/MdnsScanner.js +226 -28
  10. package/dist/cjs/mdns/MdnsScanner.js.map +1 -1
  11. package/dist/cjs/mdns/MdnsServer.d.ts +5 -1
  12. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  13. package/dist/cjs/mdns/MdnsServer.js +12 -7
  14. package/dist/cjs/mdns/MdnsServer.js.map +1 -1
  15. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  16. package/dist/cjs/peer/ControllerCommissioningFlow.js +35 -2
  17. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  18. package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -1
  19. package/dist/cjs/protocol/DeviceAdvertiser.js +6 -1
  20. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  21. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  22. package/dist/cjs/protocol/DeviceCommissioner.js +5 -1
  23. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  24. package/dist/cjs/protocol/ExchangeManager.js +1 -1
  25. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  26. package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -1
  27. package/dist/esm/interaction/ServerSubscription.js +7 -3
  28. package/dist/esm/interaction/ServerSubscription.js.map +1 -1
  29. package/dist/esm/mdns/MdnsBroadcaster.d.ts +3 -3
  30. package/dist/esm/mdns/MdnsBroadcaster.d.ts.map +1 -1
  31. package/dist/esm/mdns/MdnsBroadcaster.js +56 -31
  32. package/dist/esm/mdns/MdnsBroadcaster.js.map +1 -1
  33. package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -1
  34. package/dist/esm/mdns/MdnsScanner.js +226 -28
  35. package/dist/esm/mdns/MdnsScanner.js.map +1 -1
  36. package/dist/esm/mdns/MdnsServer.d.ts +5 -1
  37. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  38. package/dist/esm/mdns/MdnsServer.js +12 -7
  39. package/dist/esm/mdns/MdnsServer.js.map +1 -1
  40. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  41. package/dist/esm/peer/ControllerCommissioningFlow.js +36 -3
  42. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  43. package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -1
  44. package/dist/esm/protocol/DeviceAdvertiser.js +6 -1
  45. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  46. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  47. package/dist/esm/protocol/DeviceCommissioner.js +5 -1
  48. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  49. package/dist/esm/protocol/ExchangeManager.js +1 -1
  50. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  51. package/package.json +6 -6
  52. package/src/interaction/ServerSubscription.ts +7 -3
  53. package/src/mdns/MdnsBroadcaster.ts +63 -35
  54. package/src/mdns/MdnsScanner.ts +264 -43
  55. package/src/mdns/MdnsServer.ts +20 -7
  56. package/src/peer/ControllerCommissioningFlow.ts +48 -3
  57. package/src/protocol/DeviceAdvertiser.ts +7 -1
  58. package/src/protocol/DeviceCommissioner.ts +11 -2
  59. package/src/protocol/ExchangeManager.ts +1 -1
@@ -12,6 +12,7 @@ import {
12
12
  Diagnostic,
13
13
  ImplementationError,
14
14
  Logger,
15
+ MatterAggregateError,
15
16
  PtrRecord,
16
17
  SrvRecord,
17
18
  TxtRecord,
@@ -209,16 +210,31 @@ class MdnsBroadcaster {
209
210
  sessionActiveThreshold = SESSION_ACTIVE_THRESHOLD_MS
210
211
  } = {}) {
211
212
  const currentOperationalFabrics = this.#activeOperationalAnnouncements.get(announcedNetPort);
213
+ this.#activeOperationalAnnouncements.set(
214
+ announcedNetPort,
215
+ fabrics.map((f) => ({
216
+ fabricIndex: f.fabricIndex,
217
+ forInstance: getDeviceMatterQname(
218
+ Bytes.toHex(f.operationalId).toUpperCase(),
219
+ NodeId.toHexString(f.nodeId)
220
+ )
221
+ }))
222
+ );
223
+ const expires = new Array();
212
224
  if (currentOperationalFabrics !== void 0) {
213
225
  const fabricIndexesSet = new Set(fabrics.map((f) => f.fabricIndex));
214
- if (!currentOperationalFabrics.every((fabricIndex) => fabricIndexesSet.has(fabricIndex))) {
215
- await this.expireFabricAnnouncement(announcedNetPort);
226
+ for (const { fabricIndex, forInstance } of currentOperationalFabrics) {
227
+ if (!fabricIndexesSet.has(fabricIndex)) {
228
+ expires.push(
229
+ this.#mdnsServer.expireAnnouncements({
230
+ announcedNetPort,
231
+ type: AnnouncementType.Operative,
232
+ forInstance
233
+ })
234
+ );
235
+ }
216
236
  }
217
237
  }
218
- this.#activeOperationalAnnouncements.set(
219
- announcedNetPort,
220
- fabrics.map((f) => f.fabricIndex)
221
- );
222
238
  await this.#mdnsServer.setRecordsGenerator(announcedNetPort, AnnouncementType.Operative, async (netInterface) => {
223
239
  const ipMac = await this.#network.getIpMac(netInterface);
224
240
  if (ipMac === void 0) return [];
@@ -233,30 +249,39 @@ class MdnsBroadcaster {
233
249
  logger.debug(
234
250
  "Announcement Generator: Fabric",
235
251
  Diagnostic.dict({
236
- id: `${Bytes.toHex(operationalId)}/${nodeId}`,
252
+ id: `${operationalIdString}-${NodeId.toHexString(nodeId)}`,
237
253
  qname: deviceMatterQname,
238
254
  port: announcedNetPort,
239
255
  interface: netInterface
240
256
  })
241
257
  );
242
258
  const fabricRecords = [
243
- PtrRecord(SERVICE_DISCOVERY_QNAME, fabricQname),
244
- PtrRecord(MATTER_SERVICE_QNAME, deviceMatterQname),
245
- PtrRecord(fabricQname, deviceMatterQname),
246
- SrvRecord(deviceMatterQname, { priority: 0, weight: 0, port: announcedNetPort, target: hostname }),
247
- TxtRecord(deviceMatterQname, [
248
- `SII=${sessionIdleInterval}`,
249
- `SAI=${sessionActiveInterval}`,
250
- `SAT=${sessionActiveThreshold}`
251
- //`T=${TCP_SUPPORTED}` /* TCP not supported */,
252
- //`ICD=${ICD_SUPPORTED}` /* ICD not supported */,
253
- ])
259
+ PtrRecord(SERVICE_DISCOVERY_QNAME, fabricQname, deviceMatterQname),
260
+ PtrRecord(MATTER_SERVICE_QNAME, deviceMatterQname, deviceMatterQname),
261
+ PtrRecord(fabricQname, deviceMatterQname, deviceMatterQname),
262
+ SrvRecord(
263
+ deviceMatterQname,
264
+ { priority: 0, weight: 0, port: announcedNetPort, target: hostname },
265
+ deviceMatterQname
266
+ ),
267
+ TxtRecord(
268
+ deviceMatterQname,
269
+ [
270
+ `SII=${sessionIdleInterval}`,
271
+ `SAI=${sessionActiveInterval}`,
272
+ `SAT=${sessionActiveThreshold}`
273
+ //`T=${TCP_SUPPORTED}` /* TCP not supported */,
274
+ //`ICD=${ICD_SUPPORTED}` /* ICD not supported */,
275
+ ],
276
+ deviceMatterQname
277
+ )
254
278
  ];
255
279
  records.push(...fabricRecords);
256
280
  });
257
281
  records.push(...this.#getIpRecords(hostname, [...ipV6, ...ipV4]));
258
282
  return records;
259
283
  });
284
+ await MatterAggregateError.allSettled(expires);
260
285
  }
261
286
  /** Set the Broadcaster data to announce a Commissioner (aka Commissioner discovery) */
262
287
  async setCommissionerInfo(announcedNetPort, {
@@ -316,24 +341,24 @@ class MdnsBroadcaster {
316
341
  async announce(announcementPort) {
317
342
  this.#mdnsServer.announce(announcementPort).catch((error) => logger.error(error));
318
343
  }
319
- async expireFabricAnnouncement(announcementPort) {
320
- if (this.#activeOperationalAnnouncements.has(announcementPort)) {
321
- await this.#mdnsServer.expireAnnouncements(announcementPort, AnnouncementType.Operative);
322
- this.#activeOperationalAnnouncements.delete(announcementPort);
344
+ async expireFabricAnnouncement(announcedNetPort) {
345
+ if (this.#activeOperationalAnnouncements.has(announcedNetPort)) {
346
+ await this.#mdnsServer.expireAnnouncements({ announcedNetPort, type: AnnouncementType.Operative });
347
+ this.#activeOperationalAnnouncements.delete(announcedNetPort);
323
348
  }
324
349
  }
325
- async expireCommissioningAnnouncement(announcementPort) {
326
- if (this.#activeCommissioningAnnouncements.has(announcementPort)) {
327
- await this.#mdnsServer.expireAnnouncements(announcementPort, AnnouncementType.Commissionable);
328
- this.#activeCommissioningAnnouncements.delete(announcementPort);
350
+ async expireCommissioningAnnouncement(announcedNetPort) {
351
+ if (this.#activeCommissioningAnnouncements.has(announcedNetPort)) {
352
+ await this.#mdnsServer.expireAnnouncements({ announcedNetPort, type: AnnouncementType.Commissionable });
353
+ this.#activeCommissioningAnnouncements.delete(announcedNetPort);
329
354
  }
330
355
  }
331
- async expireAllAnnouncements(announcementPort) {
332
- if (!this.#activeCommissioningAnnouncements.has(announcementPort) && !this.#activeOperationalAnnouncements.has(announcementPort))
356
+ async expireAllAnnouncements(announcedNetPort) {
357
+ if (!this.#activeCommissioningAnnouncements.has(announcedNetPort) && !this.#activeOperationalAnnouncements.has(announcedNetPort))
333
358
  return;
334
- await this.#mdnsServer.expireAnnouncements(announcementPort);
335
- this.#activeCommissioningAnnouncements.delete(announcementPort);
336
- this.#activeOperationalAnnouncements.delete(announcementPort);
359
+ await this.#mdnsServer.expireAnnouncements({ announcedNetPort });
360
+ this.#activeCommissioningAnnouncements.delete(announcedNetPort);
361
+ this.#activeOperationalAnnouncements.delete(announcedNetPort);
337
362
  }
338
363
  async close() {
339
364
  while (this.#instances.size) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/mdns/MdnsBroadcaster.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MdnsScanner.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsScanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,WAAW,EACX,UAAU,EASV,QAAQ,EAGR,OAAO,EACP,eAAe,EAIf,kBAAkB,EAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAC1C,OAAO,EACH,oBAAoB,EACpB,+BAA+B,EAC/B,aAAa,EACb,iBAAiB,EACjB,OAAO,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAkB7C,KAAK,4BAA4B,GAAG,eAAe,GAAG,QAAQ,CAAC;AAyB/D;;;GAGG;AACH,qBAAa,WAAY,YAAW,OAAO;;IACvC,IAAI,IAAI,gBAEP;WAEY,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;gBAmCnF,eAAe,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,OAAO;IA8PrE;;;OAGG;IACG,qBAAqB,CACvB,EAAE,aAAa,EAAE,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,qBAAqB,UAAQ,GAC9B,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAyBzC,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,UAAO;IAKtF,mCAAmC,CAAC,UAAU,EAAE,+BAA+B,EAAE,cAAc,UAAO;IAQtG,8BAA8B,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAoLxE;;;;;;;OAOG;IACG,yBAAyB,CAC3B,UAAU,EAAE,+BAA+B,EAC3C,cAAc,SAAI,EAClB,qBAAqB,UAAQ,GAC9B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAkBlC;;;OAGG;IACG,qCAAqC,CACvC,UAAU,EAAE,+BAA+B,EAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,EAChD,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAiDlC,kCAAkC,CAAC,UAAU,EAAE,+BAA+B;mBAnOvD,eAAe,EAAE;;;;;;;;;;;;;;;;;oBAtZxB,MAAM;YACd,MAAM;YACN,MAAM;YACN,MAAM;;IA0nBd;;OAEG;IACG,KAAK;IA0fX,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,aAAa;IAmBnD,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,4BAA4B,CAAC;CASvF"}
1
+ {"version":3,"file":"MdnsScanner.d.ts","sourceRoot":"","sources":["../../../src/mdns/MdnsScanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,WAAW,EACX,UAAU,EASV,QAAQ,EAGR,OAAO,EACP,eAAe,EAIf,kBAAkB,EAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAC1C,OAAO,EACH,oBAAoB,EACpB,+BAA+B,EAC/B,aAAa,EACb,iBAAiB,EACjB,OAAO,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAkB7C,KAAK,4BAA4B,GAAG,eAAe,GAAG,QAAQ,CAAC;AAoC/D;;;GAGG;AACH,qBAAa,WAAY,YAAW,OAAO;;IACvC,IAAI,IAAI,gBAEP;WAEY,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;gBA4CnF,eAAe,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,OAAO;IAqQrE;;;OAGG;IACG,qBAAqB,CACvB,EAAE,aAAa,EAAE,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,qBAAqB,UAAQ,GAC9B,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAyBzC,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,UAAO;IAKtF,mCAAmC,CAAC,UAAU,EAAE,+BAA+B,EAAE,cAAc,UAAO;IAQtG,8BAA8B,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAoLxE;;;;;;;OAOG;IACG,yBAAyB,CAC3B,UAAU,EAAE,+BAA+B,EAC3C,cAAc,SAAI,EAClB,qBAAqB,UAAQ,GAC9B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAkBlC;;;OAGG;IACG,qCAAqC,CACvC,UAAU,EAAE,+BAA+B,EAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,EAChD,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAiDlC,kCAAkC,CAAC,UAAU,EAAE,+BAA+B;mBAnOvD,eAAe,EAAE;;;;;;;;;;;;;;;;;oBAhbxB,MAAM;YACd,MAAM;YACN,MAAM;YACN,MAAM;;IAopBd;;OAEG;IACG,KAAK;IA4rBX,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,aAAa;IAmBnD,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,4BAA4B,CAAC;CASvF"}
@@ -52,12 +52,18 @@ class MdnsScanner {
52
52
  enableIpv4
53
53
  );
54
54
  }
55
+ /** Active announces by queryId with queries and known answers */
55
56
  #activeAnnounceQueries = /* @__PURE__ */ new Map();
56
- #queryTimer;
57
- #nextAnnounceIntervalSeconds = START_ANNOUNCE_INTERVAL_SECONDS;
57
+ /** Known IP addresses by network interface */
58
+ #discoveredIpRecords = /* @__PURE__ */ new Map();
59
+ /** Known operational device records by Matter Qname */
58
60
  #operationalDeviceRecords = /* @__PURE__ */ new Map();
61
+ /** Known commissionable device records by queryId */
59
62
  #commissionableDeviceRecords = /* @__PURE__ */ new Map();
63
+ /** Waiters for specific queryIds to resolve a promise when a record is discovered */
60
64
  #recordWaiters = /* @__PURE__ */ new Map();
65
+ #queryTimer;
66
+ #nextAnnounceIntervalSeconds = START_ANNOUNCE_INTERVAL_SECONDS;
61
67
  #periodicTimer;
62
68
  #closing = false;
63
69
  #multicastServer;
@@ -88,7 +94,9 @@ class MdnsScanner {
88
94
  const allQueries = Array.from(this.#activeAnnounceQueries.values());
89
95
  const queries = allQueries.flatMap(({ queries: queries2 }) => queries2);
90
96
  const answers = allQueries.flatMap(
91
- ({ answers: answers2 }) => Object.values(answers2).flatMap((answer) => Object.values(answer).flatMap((records) => records))
97
+ ({ answers: answers2 }) => Object.values(answers2).flatMap(
98
+ (answer) => Object.values(answer).flatMap((records) => Array.isArray(records) ? records : records.values())
99
+ )
92
100
  );
93
101
  this.#queryTimer = Time.getTimer(
94
102
  "MDNS discovery",
@@ -173,9 +181,14 @@ class MdnsScanner {
173
181
  this.#nextAnnounceIntervalSeconds = START_ANNOUNCE_INTERVAL_SECONDS;
174
182
  this.#queryTimer = Time.getTimer("MDNS discovery", 0, () => this.#sendQueries()).start();
175
183
  }
176
- #getActiveQueryEarlierAnswers() {
184
+ /**
185
+ * Combines the known answers from all active queries and the known IP addresses from the network
186
+ * interface into one data package
187
+ */
188
+ #getActiveQueryEarlierAnswers(netInterface) {
177
189
  return this.#combineStructuredAnswers(
178
- ...[...this.#activeAnnounceQueries.values()].map(({ answers }) => answers)
190
+ ...[...this.#activeAnnounceQueries.values()].map(({ answers }) => answers),
191
+ this.#discoveredIpRecords.get(netInterface) ?? {}
179
192
  );
180
193
  }
181
194
  /**
@@ -550,21 +563,38 @@ class MdnsScanner {
550
563
  /** Converts the discovery data into a structured format for performant access. */
551
564
  #structureAnswers(...answersList) {
552
565
  const structuredAnswers = {};
566
+ const discoveredAt = Time.nowMs();
553
567
  answersList.forEach(
554
568
  (answers) => answers.forEach((answer) => {
555
569
  const { name, recordType } = answer;
556
570
  if (name.endsWith(MATTER_SERVICE_QNAME)) {
557
571
  structuredAnswers.operational = structuredAnswers.operational ?? {};
558
572
  structuredAnswers.operational[recordType] = structuredAnswers.operational[recordType] ?? [];
559
- structuredAnswers.operational[recordType].push(answer);
573
+ structuredAnswers.operational[recordType].push({
574
+ discoveredAt,
575
+ ...answer
576
+ });
560
577
  } else if (name.endsWith(MATTER_COMMISSION_SERVICE_QNAME)) {
561
578
  structuredAnswers.commissionable = structuredAnswers.commissionable ?? {};
562
579
  structuredAnswers.commissionable[recordType] = structuredAnswers.commissionable[recordType] ?? [];
563
- structuredAnswers.commissionable[recordType].push(answer);
564
- } else if (recordType === DnsRecordType.A || recordType === DnsRecordType.AAAA) {
565
- structuredAnswers.addresses = structuredAnswers.addresses ?? {};
566
- structuredAnswers.addresses[name] = structuredAnswers.addresses[name] ?? [];
567
- structuredAnswers.addresses[name].push(answer);
580
+ structuredAnswers.commissionable[recordType].push({
581
+ discoveredAt,
582
+ ...answer
583
+ });
584
+ } else if (recordType === DnsRecordType.AAAA) {
585
+ structuredAnswers.addressesV6 = structuredAnswers.addressesV6 ?? {};
586
+ structuredAnswers.addressesV6[name] = structuredAnswers.addressesV6[name] ?? /* @__PURE__ */ new Map();
587
+ structuredAnswers.addressesV6[name].set(answer.value, {
588
+ discoveredAt,
589
+ ...answer
590
+ });
591
+ } else if (this.#enableIpv4 && recordType === DnsRecordType.A) {
592
+ structuredAnswers.addressesV4 = structuredAnswers.addressesV4 ?? {};
593
+ structuredAnswers.addressesV4[name] = structuredAnswers.addressesV4[name] ?? /* @__PURE__ */ new Map();
594
+ structuredAnswers.addressesV4[name].set(answer.value, {
595
+ discoveredAt,
596
+ ...answer
597
+ });
568
598
  }
569
599
  })
570
600
  );
@@ -578,7 +608,14 @@ class MdnsScanner {
578
608
  for (const [recordType, records] of Object.entries(answers.operational)) {
579
609
  combinedAnswers.operational[recordType] = combinedAnswers.operational[recordType] ?? /* @__PURE__ */ new Map();
580
610
  records.forEach((record) => {
581
- combinedAnswers.operational[recordType].set(record.name, record);
611
+ const existingRecord = combinedAnswers.operational[recordType].get(record.name);
612
+ if (existingRecord && existingRecord.discoveredAt < record.discoveredAt) {
613
+ if (record.ttl === 0) {
614
+ combinedAnswers.operational[recordType].delete(record.name);
615
+ } else {
616
+ combinedAnswers.operational[recordType].set(record.name, record);
617
+ }
618
+ }
582
619
  });
583
620
  }
584
621
  }
@@ -587,15 +624,47 @@ class MdnsScanner {
587
624
  for (const [recordType, records] of Object.entries(answers.commissionable)) {
588
625
  combinedAnswers.commissionable[recordType] = combinedAnswers.commissionable[recordType] ?? /* @__PURE__ */ new Map();
589
626
  records.forEach((record) => {
590
- combinedAnswers.commissionable[recordType].set(record.name, record);
627
+ const existingRecord = combinedAnswers.commissionable[recordType].get(record.name);
628
+ if (existingRecord && existingRecord.discoveredAt < record.discoveredAt) {
629
+ if (record.ttl === 0) {
630
+ combinedAnswers.commissionable[recordType].delete(record.name);
631
+ } else {
632
+ combinedAnswers.commissionable[recordType].set(record.name, record);
633
+ }
634
+ }
591
635
  });
592
636
  }
593
637
  }
594
- if (answers.addresses) {
595
- combinedAnswers.addresses = combinedAnswers.addresses ?? {};
596
- for (const [name, records] of Object.entries(answers.addresses)) {
597
- combinedAnswers.addresses[name] = combinedAnswers.addresses[name] ?? [];
598
- combinedAnswers.addresses[name].push(...records);
638
+ if (answers.addressesV6) {
639
+ combinedAnswers.addressesV6 = combinedAnswers.addressesV6 ?? {};
640
+ for (const [name, records] of Object.entries(answers.addressesV6)) {
641
+ combinedAnswers.addressesV6[name] = combinedAnswers.addressesV6[name] ?? /* @__PURE__ */ new Map();
642
+ Object.values(records).forEach((record) => {
643
+ const existingRecord = combinedAnswers.addressesV6[name].get(record.value);
644
+ if (existingRecord && existingRecord.discoveredAt < record.discoveredAt) {
645
+ if (record.ttl === 0) {
646
+ combinedAnswers.addressesV6[name].delete(name);
647
+ } else {
648
+ combinedAnswers.addressesV6[name].set(name, record);
649
+ }
650
+ }
651
+ });
652
+ }
653
+ }
654
+ if (this.#enableIpv4 && answers.addressesV4) {
655
+ combinedAnswers.addressesV4 = combinedAnswers.addressesV4 ?? {};
656
+ for (const [name, records] of Object.entries(answers.addressesV4)) {
657
+ combinedAnswers.addressesV4[name] = combinedAnswers.addressesV4[name] ?? /* @__PURE__ */ new Map();
658
+ Object.values(records).forEach((record) => {
659
+ const existingRecord = combinedAnswers.addressesV4[name].get(record.value);
660
+ if (existingRecord && existingRecord.discoveredAt < record.discoveredAt) {
661
+ if (record.ttl === 0) {
662
+ combinedAnswers.addressesV4[name].delete(name);
663
+ } else {
664
+ combinedAnswers.addressesV4[name].set(name, record);
665
+ }
666
+ }
667
+ });
599
668
  }
600
669
  }
601
670
  }
@@ -616,8 +685,11 @@ class MdnsScanner {
616
685
  ])
617
686
  );
618
687
  }
619
- if (combinedAnswers.addresses) {
620
- result.addresses = combinedAnswers.addresses;
688
+ if (combinedAnswers.addressesV6) {
689
+ result.addressesV6 = combinedAnswers.addressesV6;
690
+ }
691
+ if (this.#enableIpv4 && combinedAnswers.addressesV4) {
692
+ result.addressesV4 = combinedAnswers.addressesV4;
621
693
  }
622
694
  return result;
623
695
  }
@@ -632,14 +704,86 @@ class MdnsScanner {
632
704
  if (message.messageType !== DnsMessageType.Response && message.messageType !== DnsMessageType.TruncatedResponse)
633
705
  return;
634
706
  const answers = this.#structureAnswers([...message.answers, ...message.additionalRecords]);
635
- const formerAnswers = this.#getActiveQueryEarlierAnswers();
707
+ const formerAnswers = this.#getActiveQueryEarlierAnswers(netInterface);
636
708
  this.#handleOperationalRecords(answers, formerAnswers, netInterface);
637
709
  this.#handleCommissionableRecords(answers, formerAnswers, netInterface);
710
+ this.#updateIpRecords(answers, netInterface);
711
+ }
712
+ /**
713
+ * Update the discovered matter relevant IP records with the new data from the DNS message.
714
+ */
715
+ #updateIpRecords(answers, netInterface) {
716
+ const interfaceRecords = this.#discoveredIpRecords.get(netInterface);
717
+ if (interfaceRecords === void 0) {
718
+ return;
719
+ }
720
+ let updated = false;
721
+ if (answers.addressesV6) {
722
+ for (const [target, ipAddresses] of Object.entries(answers.addressesV6)) {
723
+ if (interfaceRecords.addressesV6?.[target] !== void 0) {
724
+ for (const [ip, record] of Object.entries(ipAddresses)) {
725
+ if (record.ttl === 0) {
726
+ interfaceRecords.addressesV6[target].delete(ip);
727
+ } else {
728
+ interfaceRecords.addressesV6[target].set(ip, record);
729
+ }
730
+ updated = true;
731
+ }
732
+ }
733
+ }
734
+ }
735
+ if (this.#enableIpv4 && answers.addressesV4) {
736
+ for (const [target, ipAddresses] of Object.entries(answers.addressesV4)) {
737
+ if (interfaceRecords.addressesV4?.[target] !== void 0) {
738
+ for (const [ip, record] of Object.entries(ipAddresses)) {
739
+ if (record.ttl === 0) {
740
+ interfaceRecords.addressesV4[target].delete(ip);
741
+ } else {
742
+ interfaceRecords.addressesV4[target].set(ip, record);
743
+ }
744
+ updated = true;
745
+ }
746
+ }
747
+ }
748
+ }
749
+ if (updated) {
750
+ this.#discoveredIpRecords.set(netInterface, interfaceRecords);
751
+ }
752
+ }
753
+ /**
754
+ * Register Matter relevant IP records for later usage.
755
+ */
756
+ #registerIpRecords(ipAddresses, netInterface) {
757
+ const interfaceRecords = this.#discoveredIpRecords.get(netInterface) ?? {};
758
+ for (const record of ipAddresses) {
759
+ const { recordType, name, value: ip, ttl } = record;
760
+ if (ttl === 0) continue;
761
+ if (recordType === DnsRecordType.AAAA) {
762
+ interfaceRecords.addressesV6 = interfaceRecords.addressesV6 ?? {};
763
+ interfaceRecords.addressesV6[name] = interfaceRecords.addressesV6[name] ?? /* @__PURE__ */ new Map();
764
+ interfaceRecords.addressesV6[name].set(ip, record);
765
+ } else if (this.#enableIpv4 && recordType === DnsRecordType.A) {
766
+ interfaceRecords.addressesV4 = interfaceRecords.addressesV4 ?? {};
767
+ interfaceRecords.addressesV4[name] = interfaceRecords.addressesV4[name] ?? /* @__PURE__ */ new Map();
768
+ interfaceRecords.addressesV4[name].set(ip, record);
769
+ }
770
+ }
771
+ this.#discoveredIpRecords.set(netInterface, interfaceRecords);
638
772
  }
639
773
  #handleIpRecords(answers, target, netInterface) {
640
- const ipRecords = answers.flatMap((answer) => answer.addresses?.[target] ?? []).filter(
641
- ({ recordType }) => recordType === DnsRecordType.AAAA || recordType === DnsRecordType.A && this.#enableIpv4
642
- );
774
+ const ipRecords = new Array();
775
+ answers.forEach((answer) => {
776
+ if (answer.addressesV6?.[target]) {
777
+ ipRecords.push(...answer.addressesV6[target].values());
778
+ }
779
+ if (this.#enableIpv4 && answer.addressesV4?.[target]) {
780
+ ipRecords.push(...answer.addressesV4[target].values());
781
+ }
782
+ });
783
+ if (ipRecords.length === 0) {
784
+ return [];
785
+ }
786
+ this.#registerIpRecords(ipRecords, netInterface);
643
787
  const collectedIps = /* @__PURE__ */ new Map();
644
788
  ipRecords.forEach((record) => {
645
789
  const { value, ttl } = record;
@@ -727,6 +871,7 @@ class MdnsScanner {
727
871
  discoveredAt,
728
872
  ttl: ttl * 1e3
729
873
  };
874
+ const ipsInitiallyEmpty = device.addresses.size === 0;
730
875
  const { addresses } = device;
731
876
  if (ips.length > 0) {
732
877
  for (const { value: ip, ttl: ttl2 } of ips) {
@@ -743,9 +888,9 @@ class MdnsScanner {
743
888
  addresses.set(address.ip, address);
744
889
  }
745
890
  device.addresses = addresses;
746
- if (!this.#operationalDeviceRecords.has(matterName)) {
891
+ if (ipsInitiallyEmpty) {
747
892
  logger.debug(
748
- `Added IPs for operational device ${matterName} to cache (interface ${netInterface}):`,
893
+ `Added ${addresses.size} IPs for operational device ${matterName} to cache (interface ${netInterface}):`,
749
894
  ...MdnsScanner.deviceAddressDiagnostics(addresses)
750
895
  );
751
896
  }
@@ -826,7 +971,7 @@ class MdnsScanner {
826
971
  this.#commissionableDeviceRecords.delete(record.name);
827
972
  continue;
828
973
  }
829
- const recordExisting = storedRecord.addresses.size > 0;
974
+ const recordAddressesKnown = storedRecord.addresses.size > 0;
830
975
  const ips = this.#handleIpRecords([formerAnswers, answers], target, netInterface);
831
976
  if (ips.length > 0) {
832
977
  for (const { value: ip, ttl: ttl2 } of ips) {
@@ -855,12 +1000,17 @@ class MdnsScanner {
855
1000
  `Requesting IP addresses for commissionable device ${record.name} (interface ${netInterface}).`
856
1001
  );
857
1002
  this.#setQueryRecords(queryId2, queries, answers);
1003
+ } else if (!recordAddressesKnown) {
1004
+ logger.debug(
1005
+ `Added ${storedRecord.addresses.size} IPs for commissionable device ${record.name} to cache (interface ${netInterface}):`,
1006
+ ...MdnsScanner.deviceAddressDiagnostics(storedRecord.addresses)
1007
+ );
858
1008
  }
859
1009
  if (storedRecord.addresses.size === 0) continue;
860
1010
  const queryId = this.#findCommissionableQueryIdentifier(record.name, storedRecord);
861
1011
  if (queryId === void 0) continue;
862
1012
  queryMissingDataForInstances.delete(record.name);
863
- this.#finishWaiter(queryId, true, recordExisting);
1013
+ this.#finishWaiter(queryId, true, recordAddressesKnown);
864
1014
  }
865
1015
  if (queryMissingDataForInstances.size !== 0) {
866
1016
  for (const name of Array.from(queryMissingDataForInstances.values())) {
@@ -943,6 +1093,54 @@ class MdnsScanner {
943
1093
  this.#commissionableDeviceRecords.delete(recordKey);
944
1094
  }
945
1095
  });
1096
+ [...this.#activeAnnounceQueries.values()].forEach(({ answers }) => this.#expireStructuredAnswers(answers, now));
1097
+ this.#discoveredIpRecords.forEach((answers) => this.#expireStructuredAnswers(answers, now));
1098
+ }
1099
+ #expireStructuredAnswers(data, now) {
1100
+ if (data.operational) {
1101
+ Object.keys(data.operational).forEach((recordType) => {
1102
+ const type = parseInt(recordType);
1103
+ data.operational[type] = data.operational[type].filter(
1104
+ ({ discoveredAt, ttl }) => now < discoveredAt + this.#effectiveTTL(ttl * 1e3)
1105
+ );
1106
+ if (data.operational[type].length === 0) {
1107
+ delete data.operational[type];
1108
+ }
1109
+ });
1110
+ }
1111
+ if (data.commissionable) {
1112
+ Object.keys(data.commissionable).forEach((recordType) => {
1113
+ const type = parseInt(recordType);
1114
+ data.commissionable[type] = data.commissionable[type].filter(
1115
+ ({ discoveredAt, ttl }) => now < discoveredAt + this.#effectiveTTL(ttl * 1e3)
1116
+ );
1117
+ if (data.commissionable[type].length === 0) {
1118
+ delete data.commissionable[type];
1119
+ }
1120
+ });
1121
+ }
1122
+ if (data.addressesV6) {
1123
+ Object.keys(data.addressesV6).forEach((name) => {
1124
+ for (const [ip, { discoveredAt, ttl }] of data.addressesV6[name].entries()) {
1125
+ if (now < discoveredAt + this.#effectiveTTL(ttl * 1e3)) continue;
1126
+ data.addressesV6[name].delete(ip);
1127
+ }
1128
+ if (data.addressesV6[name].size === 0) {
1129
+ delete data.addressesV6[name];
1130
+ }
1131
+ });
1132
+ }
1133
+ if (data.addressesV4) {
1134
+ Object.keys(data.addressesV4).forEach((name) => {
1135
+ for (const [ip, { discoveredAt, ttl }] of data.addressesV4[name].entries()) {
1136
+ if (now < discoveredAt + this.#effectiveTTL(ttl * 1e3)) continue;
1137
+ data.addressesV4[name].delete(ip);
1138
+ }
1139
+ if (data.addressesV4[name].size === 0) {
1140
+ delete data.addressesV4[name];
1141
+ }
1142
+ });
1143
+ }
946
1144
  }
947
1145
  static discoveryDataDiagnostics(data) {
948
1146
  return Diagnostic.dict(