@matter/general 0.16.5 → 0.16.6-alpha.0-20260118-ceec17415

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.
@@ -95,7 +95,7 @@ export declare enum DnsRecordClass {
95
95
  export declare class DnsCodec {
96
96
  static decode(message: Bytes): DnsMessage | undefined;
97
97
  static decodeQuery(reader: DataReader<Endian.Big>, message: Bytes): DnsQuery;
98
- static decodeRecord(reader: DataReader<Endian.Big>, message: Bytes): DnsRecord<any>;
98
+ static decodeRecord(reader: DataReader<Endian.Big>, message: Bytes): DnsRecord<any> | undefined;
99
99
  static decodeQName(reader: DataReader<Endian.Big>, message: Bytes, visited?: Set<number>): string;
100
100
  private static decodeRecordValue;
101
101
  static decodeSrvRecord(valueBytes: Bytes, message: Bytes): SrvRecordValue;
@@ -103,6 +103,7 @@ export declare class DnsCodec {
103
103
  static decodeAaaaRecord(valueBytes: Bytes): string;
104
104
  static decodeARecord(valueBytes: Bytes): string;
105
105
  static encode({ messageType, transactionId, queries, answers, authorities, additionalRecords, }: Partial<DnsMessagePartiallyPreEncoded>): Bytes;
106
+ static encodeQuery(query: DnsQuery): Bytes;
106
107
  static encodeRecord(record: DnsRecord<any>): Bytes;
107
108
  private static encodeRecordValue;
108
109
  static encodeARecord(ip: string): Uint8Array<ArrayBuffer>;
@@ -1 +1 @@
1
- {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ module.exports = __toCommonJS(DnsCodec_exports);
35
35
  var import_Diagnostic = require("#log/Diagnostic.js");
36
36
  var import_Logger = require("#log/Logger.js");
37
37
  var import_TimeUnit = require("#time/TimeUnit.js");
38
+ var import_util = require("#util/index.js");
38
39
  var import_MatterError = require("../MatterError.js");
39
40
  var import_Bytes = require("../util/Bytes.js");
40
41
  var import_DataReader = require("../util/DataReader.js");
@@ -146,15 +147,24 @@ class DnsCodec {
146
147
  }
147
148
  const answers = new Array();
148
149
  for (let i = 0; i < answersCount; i++) {
149
- answers.push(this.decodeRecord(reader, message));
150
+ const record = this.decodeRecord(reader, message);
151
+ if (record !== void 0) {
152
+ answers.push(record);
153
+ }
150
154
  }
151
155
  const authorities = new Array();
152
156
  for (let i = 0; i < authoritiesCount; i++) {
153
- authorities.push(this.decodeRecord(reader, message));
157
+ const record = this.decodeRecord(reader, message);
158
+ if (record !== void 0) {
159
+ authorities.push(record);
160
+ }
154
161
  }
155
162
  const additionalRecords = new Array();
156
163
  for (let i = 0; i < additionalRecordsCount; i++) {
157
- additionalRecords.push(this.decodeRecord(reader, message));
164
+ const record = this.decodeRecord(reader, message);
165
+ if (record !== void 0) {
166
+ additionalRecords.push(record);
167
+ }
158
168
  }
159
169
  return { transactionId, messageType, queries, answers, authorities, additionalRecords };
160
170
  } catch (error) {
@@ -179,6 +189,9 @@ class DnsCodec {
179
189
  const valueLength = reader.readUInt16();
180
190
  const valueBytes = reader.readByteArray(valueLength);
181
191
  const value = this.decodeRecordValue(valueBytes, recordType, message);
192
+ if (recordType === void 0 || value === void 0) {
193
+ return void 0;
194
+ }
182
195
  return { name, recordType, recordClass, ttl, value, flushCache };
183
196
  }
184
197
  static decodeQName(reader, message, visited = /* @__PURE__ */ new Set()) {
@@ -285,7 +298,19 @@ class DnsCodec {
285
298
  });
286
299
  return writer.toByteArray();
287
300
  }
301
+ static encodeQuery(query) {
302
+ const { name, recordType, recordClass, uniCastResponse = false } = query;
303
+ const writer = new import_DataWriter.DataWriter();
304
+ writer.writeByteArray(this.encodeQName(name));
305
+ writer.writeUInt16(recordType);
306
+ writer.writeUInt16(recordClass | (uniCastResponse ? 32768 : 0));
307
+ return writer.toByteArray();
308
+ }
288
309
  static encodeRecord(record) {
310
+ if (!(0, import_util.isObject)(record) || Object.keys(record).length === 0) {
311
+ logger.debug("Skipping record encoding: record is empty or not an object");
312
+ return new Uint8Array(0);
313
+ }
289
314
  const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
290
315
  if (recordType === void 0 || value === void 0) {
291
316
  logger.warn("Skipping record encoding due to missing type or value.", import_Diagnostic.Diagnostic.dict(record));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codec/DnsCodec.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["DnsMessageTypeFlag", "DnsMessageType", "DnsRecordType", "DnsRecordClass"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MdnsSocket.d.ts","sourceRoot":"","sources":["../../../../src/net/dns-sd/MdnsSocket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAEV,cAAc,EAGjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAKvE;;GAEG;AACH,qBAAa,UAAU;;WASN,MAAM,CACf,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;KAAE;gBAgB5E,MAAM,EAAE,kBAAkB;IAKtC,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,YAEf;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,OAAO,yDAEV;IAEK,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAAE,WAAW,EAAE,cAAc,CAAA;KAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IA+ExG,KAAK;CAmCd;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,OAAQ,SAAQ,UAAU;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACtB;IAEM,MAAM,cAAc,gBAAgB,CAAC;IACrC,MAAM,cAAc,aAAa,CAAC;IAClC,MAAM,cAAc,OAAO,CAAC;CACtC"}
1
+ {"version":3,"file":"MdnsSocket.d.ts","sourceRoot":"","sources":["../../../../src/net/dns-sd/MdnsSocket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAEV,cAAc,EAGjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAKvE;;GAEG;AACH,qBAAa,UAAU;;WASN,MAAM,CACf,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;KAAE;gBAgB5E,MAAM,EAAE,kBAAkB;IAKtC,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,YAEf;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,OAAO,yDAEV;IAEK,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAAE,WAAW,EAAE,cAAc,CAAA;KAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAgJxG,KAAK;CAmCd;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,OAAQ,SAAQ,UAAU;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACtB;IAEM,MAAM,cAAc,gBAAgB,CAAC;IACrC,MAAM,cAAc,aAAa,CAAC;IAClC,MAAM,cAAc,OAAO,CAAC;CACtC"}
@@ -73,7 +73,22 @@ class MdnsSocket {
73
73
  return this.#receipt;
74
74
  }
75
75
  async send(message, intf, unicastDest) {
76
- const { messageType } = message;
76
+ const { messageType, queries = [] } = message;
77
+ const queryChunks = this.#splitQueries(queries);
78
+ if (queryChunks.length > 1) {
79
+ for (const queryChunk of queryChunks) {
80
+ const chunkMessage = {
81
+ transactionId: 0,
82
+ messageType,
83
+ queries: queryChunk,
84
+ answers: [],
85
+ authorities: message.authorities ?? [],
86
+ additionalRecords: []
87
+ };
88
+ await this.#send(chunkMessage, intf, unicastDest);
89
+ }
90
+ return;
91
+ }
77
92
  const truncatedMessageType = import_DnsCodec.DnsMessageType.isQuery(messageType) ? messageType | import_DnsCodec.DnsMessageTypeFlag.TC : messageType;
78
93
  const chunk = {
79
94
  transactionId: 0,
@@ -90,9 +105,9 @@ class MdnsSocket {
90
105
  if (chunkSize + answerEncoded.byteLength > import_DnsCodec.MAX_MDNS_MESSAGE_SIZE) {
91
106
  if (chunk.answers.length === 0) {
92
107
  logger.warn(
93
- `MDNS message with ${import_Diagnostic.Diagnostic.json(
108
+ `Sending oversized DNS answer record (${answerEncoded.byteLength} bytes) that exceeds max message size: ${import_Diagnostic.Diagnostic.json(
94
109
  chunk.queries
95
- )} is too big to fit into a single MDNS message. Send anyway, but please report!`
110
+ )}`
96
111
  );
97
112
  }
98
113
  await this.#send(
@@ -125,6 +140,33 @@ class MdnsSocket {
125
140
  }
126
141
  await this.#send(chunk, intf, unicastDest);
127
142
  }
143
+ /**
144
+ * Split queries into chunks that fit within MAX_MDNS_MESSAGE_SIZE.
145
+ * Returns an array of query arrays - if all queries fit in one message, returns [[...queries]].
146
+ */
147
+ #splitQueries(queries) {
148
+ if (queries.length === 0) {
149
+ return [[]];
150
+ }
151
+ const DNS_HEADER_SIZE = 12;
152
+ const chunks = [];
153
+ let currentChunk = [];
154
+ let currentChunkSize = DNS_HEADER_SIZE;
155
+ for (const query of queries) {
156
+ const querySize = import_DnsCodec.DnsCodec.encodeQuery(query).byteLength;
157
+ if (currentChunkSize + querySize > import_DnsCodec.MAX_MDNS_MESSAGE_SIZE && currentChunk.length > 0) {
158
+ chunks.push(currentChunk);
159
+ currentChunk = [];
160
+ currentChunkSize = DNS_HEADER_SIZE;
161
+ }
162
+ currentChunk.push(query);
163
+ currentChunkSize += querySize;
164
+ }
165
+ if (currentChunk.length > 0) {
166
+ chunks.push(currentChunk);
167
+ }
168
+ return chunks;
169
+ }
128
170
  async #send(message, intf, unicastDest) {
129
171
  await this.#socket.send(import_DnsCodec.DnsCodec.encode(message), intf, unicastDest);
130
172
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/net/dns-sd/MdnsSocket.ts"],
4
- "mappings": "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",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAOO;AACP,wBAA2B;AAC3B,oBAAuB;AACvB,yBAAqC;AAErC,gCAAmC;AAGnC,wBAAiD;AACjD,sBAA6B;AAtB7B;AAAA;AAAA;AAAA;AAAA;AAwBA,MAAM,SAAS,qBAAO,IAAI,cAAc;AAKjC,MAAM,WAAW;AAAA,EACpB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,WAA2D,IAAI;AAAA,IAC3D,WAAS,OAAO,MAAM,oCAAoC,KAAK;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,aAAa,OACT,SACA,SACF;AACE,UAAM,EAAE,aAAa,MAAM,cAAc,SAAS,IAAI,WAAW,CAAC;AAClE,UAAM,SAAS,IAAI;AAAA,MACf,MAAM,6CAAmB,OAAO;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,aAAa,WAAW,iBAAiB;AAAA,QAC/D,sBAAsB,WAAW;AAAA,QACjC,eAAe,WAAW;AAAA,MAC9B,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,QAA4B;AACpC,SAAK,UAAU;AACf,WAAO,UAAU,KAAK,eAAe,KAAK,IAAI,CAAC;AAAA,EACnD;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,KAAK,SAAgE,MAAe,aAAsB;AAC5G,UAAM,EAAE,aAAa,UAAU,CAAC,EAAE,IAAI;AAGtC,UAAM,cAAc,KAAK,cAAc,OAAO;AAE9C,QAAI,YAAY,SAAS,GAAG;AASxB,iBAAW,cAAc,aAAa;AAClC,cAAM,eAA8C;AAAA,UAChD,eAAe;AAAA,UACf;AAAA,UACA,SAAS;AAAA,UACT,SAAS,CAAC;AAAA,UACV,aAAa,QAAQ,eAAe,CAAC;AAAA,UACrC,mBAAmB,CAAC;AAAA,QACxB;AACA,cAAM,KAAK,MAAM,cAAc,MAAM,WAAW;AAAA,MACpD;AACA;AAAA,IACJ;AAIA,UAAM,uBAAuB,+BAAe,QAAQ,WAAW,IACzD,cAAc,mCAAmB,KACjC;AAEN,UAAM,QAAuC;AAAA,MACzC,eAAe;AAAA,MACf,SAAS,CAAC;AAAA,MACV,aAAa,CAAC;AAAA,MAEd,GAAG;AAAA,MAEH,SAAS,CAAC;AAAA,MACV,mBAAmB,CAAC;AAAA,IACxB;AAEA,QAAI,6BAA6B,yBAAS,OAAO,KAAK;AACtD,QAAI,YAAY,2BAA2B;AAG3C,eAAW,UAAU,QAAQ,WAAW,CAAC,GAAG;AACxC,YAAM,gBAAgB,yBAAS,aAAa,MAAM;AAElD,UAAI,YAAY,cAAc,aAAa,uCAAuB;AAC9D,YAAI,MAAM,QAAQ,WAAW,GAAG;AAE5B,iBAAO;AAAA,YACH,wCAAwC,cAAc,UAAU,0CAA0C,6BAAW;AAAA,cACjH,MAAM;AAAA,YACV,CAAC;AAAA,UACL;AAAA,QACJ;AAIA,cAAM,KAAK;AAAA,UACP;AAAA,YACI,GAAG;AAAA,YACH,aAAa;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAGA,YAAI,MAAM,QAAQ,QAAQ;AACtB,gBAAM,QAAQ,SAAS;AACvB,uCAA6B,yBAAS,OAAO,KAAK;AAAA,QACtD;AACA,cAAM,QAAQ,SAAS;AACvB,oBAAY,2BAA2B,aAAa,cAAc;AAAA,MACtE,OAAO;AACH,qBAAa,cAAc;AAAA,MAC/B;AAEA,YAAM,QAAQ,KAAK,aAAa;AAAA,IACpC;AAGA,UAAM,oBAAoB,QAAQ,qBAAqB,CAAC;AACxD,eAAW,oBAAoB,mBAAmB;AAC9C,YAAM,0BAA0B,yBAAS,aAAa,gBAAgB;AACtE,mBAAa,wBAAwB;AACrC,UAAI,YAAY,uCAAuB;AACnC;AAAA,MACJ;AACA,YAAM,kBAAkB,KAAK,uBAAuB;AAAA,IACxD;AAEA,UAAM,KAAK,MAAM,OAAO,MAAM,WAAW;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,SAAyD;AACnE,QAAI,QAAQ,WAAW,GAAG;AACtB,aAAO,CAAC,CAAC,CAAC;AAAA,IACd;AAGA,UAAM,kBAAkB;AACxB,UAAM,SAAkC,CAAC;AACzC,QAAI,eAAsC,CAAC;AAC3C,QAAI,mBAAmB;AAEvB,eAAW,SAAS,SAAS;AACzB,YAAM,YAAY,yBAAS,YAAY,KAAK,EAAE;AAI9C,UAAI,mBAAmB,YAAY,yCAAyB,aAAa,SAAS,GAAG;AACjF,eAAO,KAAK,YAAY;AACxB,uBAAe,CAAC;AAChB,2BAAmB;AAAA,MACvB;AAEA,mBAAa,KAAK,KAAK;AACvB,0BAAoB;AAAA,IACxB;AAGA,QAAI,aAAa,SAAS,GAAG;AACzB,aAAO,KAAK,YAAY;AAAA,IAC5B;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,MAAM,SAAwC,MAAe,aAAsB;AACrF,UAAM,KAAK,QAAQ,KAAK,yBAAS,OAAO,OAAO,GAAG,MAAM,WAAW;AAAA,EACvE;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,YAAY;AACjB,UAAM,KAAK,QAAQ,MAAM;AACzB,QAAI,KAAK,WAAW;AAChB,YAAM,wCAAqB,WAAW,KAAK,SAAS;AAAA,IACxD;AAAA,EACJ;AAAA,EAEA,eAAe,OAAc,UAAkB,YAAoB;AAE/D,QAAI,KAAK,WAAW;AAChB;AAAA,IACJ;AAGA,UAAM,SAAS,yBAAS,OAAO,KAAK;AAGpC,QAAI,WAAW,QAAW;AACtB;AAAA,IACJ;AAEA,QAAI,UAAU,KAAK,SAAS,KAAK;AAAA,MAC7B,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACJ,CAAC;AAED,QAAI,6BAAa,GAAG,OAAO,GAAG;AAC1B,UAAI,KAAK,cAAc,QAAW;AAC9B,aAAK,YAAY,oBAAI,IAAI;AAAA,MAC7B;AACA,gBAAU,QAAQ,QAAQ,OAAO,EAAE,QAAQ,MAAM,KAAK,WAAW,OAAO,OAA4B,CAAC;AAAA,IACzG;AAAA,EACJ;AACJ;AAAA,CAEO,CAAUA,gBAAV;AAMI,EAAMA,YAAA,iBAAiB;AACvB,EAAMA,YAAA,iBAAiB;AACvB,EAAMA,YAAA,iBAAiB;AAAA,GARjB;",
5
5
  "names": ["MdnsSocket"]
6
6
  }
@@ -95,7 +95,7 @@ export declare enum DnsRecordClass {
95
95
  export declare class DnsCodec {
96
96
  static decode(message: Bytes): DnsMessage | undefined;
97
97
  static decodeQuery(reader: DataReader<Endian.Big>, message: Bytes): DnsQuery;
98
- static decodeRecord(reader: DataReader<Endian.Big>, message: Bytes): DnsRecord<any>;
98
+ static decodeRecord(reader: DataReader<Endian.Big>, message: Bytes): DnsRecord<any> | undefined;
99
99
  static decodeQName(reader: DataReader<Endian.Big>, message: Bytes, visited?: Set<number>): string;
100
100
  private static decodeRecordValue;
101
101
  static decodeSrvRecord(valueBytes: Bytes, message: Bytes): SrvRecordValue;
@@ -103,6 +103,7 @@ export declare class DnsCodec {
103
103
  static decodeAaaaRecord(valueBytes: Bytes): string;
104
104
  static decodeARecord(valueBytes: Bytes): string;
105
105
  static encode({ messageType, transactionId, queries, answers, authorities, additionalRecords, }: Partial<DnsMessagePartiallyPreEncoded>): Bytes;
106
+ static encodeQuery(query: DnsQuery): Bytes;
106
107
  static encodeRecord(record: DnsRecord<any>): Bytes;
107
108
  private static encodeRecordValue;
108
109
  static encodeARecord(ip: string): Uint8Array<ArrayBuffer>;
@@ -1 +1 @@
1
- {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,eAAO,MAAM,gBAAgB,UAAe,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,SAAS,GAClB,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,cAAsB,EACtB,oBAAkB,KACnB,SAAS,CAAC,MAAM,CAOjB,CAAC;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,EAAE,IAAI,MAAM,EAAE,cAAsB,EAAE,oBAAkB,KAAG,SAAS,CAAC,MAAM,CAO7G,CAAC;AACH,eAAO,MAAM,UAAU,GACnB,MAAM,MAAM,EACZ,IAAI,MAAM,EACV,cAAsB,EACtB,oBAAkB,KACnB,SAAS,CAAC,MAAM,CAOjB,CAAC;AACH,eAAO,MAAM,SAAS,GAClB,MAAM,MAAM,EACZ,SAAS,MAAM,EAAE,EACjB,cAAsB,EACtB,oBAAkB,KACnB,SAAS,CAAC,MAAM,EAAE,CAOnB,CAAC;AACH,eAAO,MAAM,SAAS,GAClB,MAAM,MAAM,EACZ,KAAK,cAAc,EACnB,cAAsB,EACtB,oBAAkB,KACnB,SAAS,CAAC,cAAc,CAOzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,IAAI;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B,iBAAiB,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,mBAAmB,CAAC,GAAG;IAC5F,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;IACpC,iBAAiB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;CACjD,CAAC;AAEF,+EAA+E;AAC/E,oBAAY,kBAAkB;IAC1B,8DAA8D;IAC9D,EAAE,QAAS;IAEX,kHAAkH;IAClH,MAAM,QAAS;IAEf,kHAAkH;IAClH,EAAE,OAAS;IAEX,qFAAqF;IACrF,EAAE,MAAS;IAEX,0EAA0E;IAC1E,EAAE,MAAS;IAEX,mGAAmG;IACnG,EAAE,MAAS;IAEX,6FAA6F;IAC7F,EAAE,KAAS;IAEX,mGAAmG;IACnG,EAAE,KAAS;IAEX,yHAAyH;IACzH,KAAK,KAAS;CACjB;AAED,iEAAiE;AACjE,oBAAY,cAAc;IACtB,KAAK,IAAI,CAAE,aAAa;IACxB,QAAQ,QAAgD;CAC3D;AAED,yBAAiB,cAAc,CAAC;IAC5B,SAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,WAEnC;IAED,SAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,WAEtC;CACJ;AAED,oBAAY,aAAa;IACrB,CAAC,IAAO;IACR,GAAG,KAAO;IACV,GAAG,KAAO;IACV,IAAI,KAAO;IACX,GAAG,KAAO;IACV,IAAI,KAAO;IACX,GAAG,MAAO;CACb;AAED,oBAAY,cAAc;IACtB,EAAE,IAAO;IACT,GAAG,MAAO;CACb;AAED,qBAAa,QAAQ;IACjB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS;IA+BrD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,QAAQ;IAS5E,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC;IAanF,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,cAAoB,GAAG,MAAM;IAgCvG,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkBhC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,cAAc;IASzE,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,EAAE;IAYnD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM;IAKlD,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM;IAK/C,MAAM,CAAC,MAAM,CAAC,EACV,WAAW,EACX,aAAiB,EACjB,OAAY,EACZ,OAAY,EACZ,WAAgB,EAChB,iBAAsB,GACzB,EAAE,OAAO,CAAC,6BAA6B,CAAC,GAAG,KAAK;IA4BjD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;IAmBlD,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkBhC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM;IAK/B,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAKlC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;IAUxC,MAAM,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc;IASzE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM;CAanC"}
1
+ {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  import { Diagnostic } from "#log/Diagnostic.js";
7
7
  import { Logger } from "#log/Logger.js";
8
8
  import { Seconds } from "#time/TimeUnit.js";
9
+ import { isObject } from "#util/index.js";
9
10
  import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
10
11
  import { Bytes } from "../util/Bytes.js";
11
12
  import { DataReader } from "../util/DataReader.js";
@@ -112,15 +113,24 @@ class DnsCodec {
112
113
  }
113
114
  const answers = new Array();
114
115
  for (let i = 0; i < answersCount; i++) {
115
- answers.push(this.decodeRecord(reader, message));
116
+ const record = this.decodeRecord(reader, message);
117
+ if (record !== void 0) {
118
+ answers.push(record);
119
+ }
116
120
  }
117
121
  const authorities = new Array();
118
122
  for (let i = 0; i < authoritiesCount; i++) {
119
- authorities.push(this.decodeRecord(reader, message));
123
+ const record = this.decodeRecord(reader, message);
124
+ if (record !== void 0) {
125
+ authorities.push(record);
126
+ }
120
127
  }
121
128
  const additionalRecords = new Array();
122
129
  for (let i = 0; i < additionalRecordsCount; i++) {
123
- additionalRecords.push(this.decodeRecord(reader, message));
130
+ const record = this.decodeRecord(reader, message);
131
+ if (record !== void 0) {
132
+ additionalRecords.push(record);
133
+ }
124
134
  }
125
135
  return { transactionId, messageType, queries, answers, authorities, additionalRecords };
126
136
  } catch (error) {
@@ -145,6 +155,9 @@ class DnsCodec {
145
155
  const valueLength = reader.readUInt16();
146
156
  const valueBytes = reader.readByteArray(valueLength);
147
157
  const value = this.decodeRecordValue(valueBytes, recordType, message);
158
+ if (recordType === void 0 || value === void 0) {
159
+ return void 0;
160
+ }
148
161
  return { name, recordType, recordClass, ttl, value, flushCache };
149
162
  }
150
163
  static decodeQName(reader, message, visited = /* @__PURE__ */ new Set()) {
@@ -251,7 +264,19 @@ class DnsCodec {
251
264
  });
252
265
  return writer.toByteArray();
253
266
  }
267
+ static encodeQuery(query) {
268
+ const { name, recordType, recordClass, uniCastResponse = false } = query;
269
+ const writer = new DataWriter();
270
+ writer.writeByteArray(this.encodeQName(name));
271
+ writer.writeUInt16(recordType);
272
+ writer.writeUInt16(recordClass | (uniCastResponse ? 32768 : 0));
273
+ return writer.toByteArray();
274
+ }
254
275
  static encodeRecord(record) {
276
+ if (!isObject(record) || Object.keys(record).length === 0) {
277
+ logger.debug("Skipping record encoding: record is empty or not an object");
278
+ return new Uint8Array(0);
279
+ }
255
280
  const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
256
281
  if (recordType === void 0 || value === void 0) {
257
282
  logger.warn("Skipping record encoding due to missing type or value.", Diagnostic.dict(record));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codec/DnsCodec.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["DnsMessageTypeFlag", "DnsMessageType", "DnsRecordType", "DnsRecordClass"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MdnsSocket.d.ts","sourceRoot":"","sources":["../../../../src/net/dns-sd/MdnsSocket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAEV,cAAc,EAGjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAKvE;;GAEG;AACH,qBAAa,UAAU;;WASN,MAAM,CACf,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;KAAE;gBAgB5E,MAAM,EAAE,kBAAkB;IAKtC,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,YAEf;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,OAAO,yDAEV;IAEK,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAAE,WAAW,EAAE,cAAc,CAAA;KAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IA+ExG,KAAK;CAmCd;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,OAAQ,SAAQ,UAAU;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACtB;IAEM,MAAM,cAAc,gBAAgB,CAAC;IACrC,MAAM,cAAc,aAAa,CAAC;IAClC,MAAM,cAAc,OAAO,CAAC;CACtC"}
1
+ {"version":3,"file":"MdnsSocket.d.ts","sourceRoot":"","sources":["../../../../src/net/dns-sd/MdnsSocket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,UAAU,EAEV,cAAc,EAGjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAKvE;;GAEG;AACH,qBAAa,UAAU;;WASN,MAAM,CACf,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;KAAE;gBAgB5E,MAAM,EAAE,kBAAkB;IAKtC,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,YAEf;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,OAAO,yDAEV;IAEK,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;QAAE,WAAW,EAAE,cAAc,CAAA;KAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAgJxG,KAAK;CAmCd;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,OAAQ,SAAQ,UAAU;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACtB;IAEM,MAAM,cAAc,gBAAgB,CAAC;IACrC,MAAM,cAAc,aAAa,CAAC;IAClC,MAAM,cAAc,OAAO,CAAC;CACtC"}
@@ -55,7 +55,22 @@ class MdnsSocket {
55
55
  return this.#receipt;
56
56
  }
57
57
  async send(message, intf, unicastDest) {
58
- const { messageType } = message;
58
+ const { messageType, queries = [] } = message;
59
+ const queryChunks = this.#splitQueries(queries);
60
+ if (queryChunks.length > 1) {
61
+ for (const queryChunk of queryChunks) {
62
+ const chunkMessage = {
63
+ transactionId: 0,
64
+ messageType,
65
+ queries: queryChunk,
66
+ answers: [],
67
+ authorities: message.authorities ?? [],
68
+ additionalRecords: []
69
+ };
70
+ await this.#send(chunkMessage, intf, unicastDest);
71
+ }
72
+ return;
73
+ }
59
74
  const truncatedMessageType = DnsMessageType.isQuery(messageType) ? messageType | DnsMessageTypeFlag.TC : messageType;
60
75
  const chunk = {
61
76
  transactionId: 0,
@@ -72,9 +87,9 @@ class MdnsSocket {
72
87
  if (chunkSize + answerEncoded.byteLength > MAX_MDNS_MESSAGE_SIZE) {
73
88
  if (chunk.answers.length === 0) {
74
89
  logger.warn(
75
- `MDNS message with ${Diagnostic.json(
90
+ `Sending oversized DNS answer record (${answerEncoded.byteLength} bytes) that exceeds max message size: ${Diagnostic.json(
76
91
  chunk.queries
77
- )} is too big to fit into a single MDNS message. Send anyway, but please report!`
92
+ )}`
78
93
  );
79
94
  }
80
95
  await this.#send(
@@ -107,6 +122,33 @@ class MdnsSocket {
107
122
  }
108
123
  await this.#send(chunk, intf, unicastDest);
109
124
  }
125
+ /**
126
+ * Split queries into chunks that fit within MAX_MDNS_MESSAGE_SIZE.
127
+ * Returns an array of query arrays - if all queries fit in one message, returns [[...queries]].
128
+ */
129
+ #splitQueries(queries) {
130
+ if (queries.length === 0) {
131
+ return [[]];
132
+ }
133
+ const DNS_HEADER_SIZE = 12;
134
+ const chunks = [];
135
+ let currentChunk = [];
136
+ let currentChunkSize = DNS_HEADER_SIZE;
137
+ for (const query of queries) {
138
+ const querySize = DnsCodec.encodeQuery(query).byteLength;
139
+ if (currentChunkSize + querySize > MAX_MDNS_MESSAGE_SIZE && currentChunk.length > 0) {
140
+ chunks.push(currentChunk);
141
+ currentChunk = [];
142
+ currentChunkSize = DNS_HEADER_SIZE;
143
+ }
144
+ currentChunk.push(query);
145
+ currentChunkSize += querySize;
146
+ }
147
+ if (currentChunk.length > 0) {
148
+ chunks.push(currentChunk);
149
+ }
150
+ return chunks;
151
+ }
110
152
  async #send(message, intf, unicastDest) {
111
153
  await this.#socket.send(DnsCodec.encode(message), intf, unicastDest);
112
154
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/net/dns-sd/MdnsSocket.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["MdnsSocket"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/general",
3
- "version": "0.16.5",
3
+ "version": "0.16.6-alpha.0-20260118-ceec17415",
4
4
  "description": "Non-Matter support for Matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -36,7 +36,7 @@
36
36
  "@noble/curves": "^2.0.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.16.5"
39
+ "@matter/testing": "0.16.6-alpha.0-20260118-ceec17415"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -8,6 +8,7 @@ import { Diagnostic } from "#log/Diagnostic.js";
8
8
  import { Logger } from "#log/Logger.js";
9
9
  import { Duration } from "#time/Duration.js";
10
10
  import { Seconds } from "#time/TimeUnit.js";
11
+ import { isObject } from "#util/index.js";
11
12
  import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
12
13
  import { Bytes, Endian } from "../util/Bytes.js";
13
14
  import { DataReader } from "../util/DataReader.js";
@@ -199,15 +200,24 @@ export class DnsCodec {
199
200
  }
200
201
  const answers = new Array<DnsRecord<any>>();
201
202
  for (let i = 0; i < answersCount; i++) {
202
- answers.push(this.decodeRecord(reader, message));
203
+ const record = this.decodeRecord(reader, message);
204
+ if (record !== undefined) {
205
+ answers.push(record);
206
+ }
203
207
  }
204
208
  const authorities = new Array<DnsRecord<any>>();
205
209
  for (let i = 0; i < authoritiesCount; i++) {
206
- authorities.push(this.decodeRecord(reader, message));
210
+ const record = this.decodeRecord(reader, message);
211
+ if (record !== undefined) {
212
+ authorities.push(record);
213
+ }
207
214
  }
208
215
  const additionalRecords = new Array<DnsRecord<any>>();
209
216
  for (let i = 0; i < additionalRecordsCount; i++) {
210
- additionalRecords.push(this.decodeRecord(reader, message));
217
+ const record = this.decodeRecord(reader, message);
218
+ if (record !== undefined) {
219
+ additionalRecords.push(record);
220
+ }
211
221
  }
212
222
  return { transactionId, messageType, queries, answers, authorities, additionalRecords };
213
223
  } catch (error) {
@@ -224,7 +234,7 @@ export class DnsCodec {
224
234
  return { name, recordType, recordClass, uniCastResponse };
225
235
  }
226
236
 
227
- static decodeRecord(reader: DataReader<Endian.Big>, message: Bytes): DnsRecord<any> {
237
+ static decodeRecord(reader: DataReader<Endian.Big>, message: Bytes): DnsRecord<any> | undefined {
228
238
  const name = this.decodeQName(reader, message);
229
239
  const recordType = reader.readUInt16();
230
240
  const classInt = reader.readUInt16();
@@ -234,6 +244,12 @@ export class DnsCodec {
234
244
  const valueLength = reader.readUInt16();
235
245
  const valueBytes = reader.readByteArray(valueLength);
236
246
  const value = this.decodeRecordValue(valueBytes, recordType, message);
247
+
248
+ // Validate that the record has required fields
249
+ if (recordType === undefined || value === undefined) {
250
+ return undefined;
251
+ }
252
+
237
253
  return { name, recordType, recordClass, ttl, value, flushCache };
238
254
  }
239
255
 
@@ -353,7 +369,22 @@ export class DnsCodec {
353
369
  return writer.toByteArray();
354
370
  }
355
371
 
372
+ static encodeQuery(query: DnsQuery): Bytes {
373
+ const { name, recordType, recordClass, uniCastResponse = false } = query;
374
+ const writer = new DataWriter();
375
+ writer.writeByteArray(this.encodeQName(name));
376
+ writer.writeUInt16(recordType);
377
+ writer.writeUInt16(recordClass | (uniCastResponse ? 0x8000 : 0));
378
+ return writer.toByteArray();
379
+ }
380
+
356
381
  static encodeRecord(record: DnsRecord<any>): Bytes {
382
+ // Validate record is a proper object with required fields
383
+ if (!isObject(record) || Object.keys(record).length === 0) {
384
+ logger.debug("Skipping record encoding: record is empty or not an object");
385
+ return new Uint8Array(0);
386
+ }
387
+
357
388
  const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
358
389
 
359
390
  if (recordType === undefined || value === undefined) {
@@ -76,7 +76,35 @@ export class MdnsSocket {
76
76
  }
77
77
 
78
78
  async send(message: Partial<DnsMessage> & { messageType: DnsMessageType }, intf?: string, unicastDest?: string) {
79
- const { messageType } = message;
79
+ const { messageType, queries = [] } = message;
80
+
81
+ // Check if queries need to be split across multiple messages
82
+ const queryChunks = this.#splitQueries(queries);
83
+
84
+ if (queryChunks.length > 1) {
85
+ // Query splitting required - send each chunk as an independent query message.
86
+ // RFC 6762 does not specify how to handle queries that exceed the message size limit.
87
+ //
88
+ // When we split queries across multiple messages, known answer suppression will not work anyway, and it is
89
+ // an edge case likely on start of the server when re-discovering many devices, so we likely have
90
+ // few known answers anyway.
91
+ //
92
+ // See: https://www.rfc-editor.org/rfc/rfc6762.html Section 7.2
93
+ for (const queryChunk of queryChunks) {
94
+ const chunkMessage: DnsMessagePartiallyPreEncoded = {
95
+ transactionId: 0,
96
+ messageType,
97
+ queries: queryChunk,
98
+ answers: [],
99
+ authorities: message.authorities ?? [],
100
+ additionalRecords: [],
101
+ };
102
+ await this.#send(chunkMessage, intf, unicastDest);
103
+ }
104
+ return;
105
+ }
106
+
107
+ // Normal case: all queries fit in one message - proceed with answer splitting if needed
80
108
  // When we send Queries that are too long they need to have the Truncated flag set
81
109
  const truncatedMessageType = DnsMessageType.isQuery(messageType)
82
110
  ? messageType | DnsMessageTypeFlag.TC
@@ -93,21 +121,20 @@ export class MdnsSocket {
93
121
  additionalRecords: [],
94
122
  };
95
123
 
96
- // Note - for size calculations we assume queries are relatively small. We only split answers across messages
97
124
  let encodedChunkWithoutAnswers = DnsCodec.encode(chunk);
98
125
  let chunkSize = encodedChunkWithoutAnswers.byteLength;
99
126
 
100
- // Add answers, splitting message as necessary
127
+ // Add answers, splitting the message as necessary
101
128
  for (const answer of message.answers ?? []) {
102
129
  const answerEncoded = DnsCodec.encodeRecord(answer);
103
130
 
104
131
  if (chunkSize + answerEncoded.byteLength > MAX_MDNS_MESSAGE_SIZE) {
105
132
  if (chunk.answers.length === 0) {
106
- // The first answer is already too big, log at least a warning
133
+ // Single answer exceeds message size - log warning but send anyway
107
134
  logger.warn(
108
- `MDNS message with ${Diagnostic.json(
135
+ `Sending oversized DNS answer record (${answerEncoded.byteLength} bytes) that exceeds max message size: ${Diagnostic.json(
109
136
  chunk.queries,
110
- )} is too big to fit into a single MDNS message. Send anyway, but please report!`,
137
+ )}`,
111
138
  );
112
139
  }
113
140
 
@@ -150,6 +177,44 @@ export class MdnsSocket {
150
177
  await this.#send(chunk, intf, unicastDest);
151
178
  }
152
179
 
180
+ /**
181
+ * Split queries into chunks that fit within MAX_MDNS_MESSAGE_SIZE.
182
+ * Returns an array of query arrays - if all queries fit in one message, returns [[...queries]].
183
+ */
184
+ #splitQueries(queries: DnsMessage["queries"]): DnsMessage["queries"][] {
185
+ if (queries.length === 0) {
186
+ return [[]];
187
+ }
188
+
189
+ // DNS header is 12 bytes
190
+ const DNS_HEADER_SIZE = 12;
191
+ const chunks: DnsMessage["queries"][] = [];
192
+ let currentChunk: DnsMessage["queries"] = [];
193
+ let currentChunkSize = DNS_HEADER_SIZE;
194
+
195
+ for (const query of queries) {
196
+ const querySize = DnsCodec.encodeQuery(query).byteLength;
197
+
198
+ // If adding this query exceeds the limit, and we have queries in the current chunk,
199
+ // start a new chunk
200
+ if (currentChunkSize + querySize > MAX_MDNS_MESSAGE_SIZE && currentChunk.length > 0) {
201
+ chunks.push(currentChunk);
202
+ currentChunk = [];
203
+ currentChunkSize = DNS_HEADER_SIZE;
204
+ }
205
+
206
+ currentChunk.push(query);
207
+ currentChunkSize += querySize;
208
+ }
209
+
210
+ // Remember the last chunk
211
+ if (currentChunk.length > 0) {
212
+ chunks.push(currentChunk);
213
+ }
214
+
215
+ return chunks;
216
+ }
217
+
153
218
  async #send(message: DnsMessagePartiallyPreEncoded, intf?: string, unicastDest?: string) {
154
219
  await this.#socket.send(DnsCodec.encode(message), intf, unicastDest);
155
220
  }