Skip to content

Commit ec8c40e

Browse files
committed
fixup! feat: implement unicast DNS-SD
1 parent f4a8726 commit ec8c40e

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

lib/src/core/implementation/thing_discovery.dart

+15-7
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,17 @@ class ThingDiscovery extends Stream<ThingDescription>
275275
const defaultType = "Thing";
276276

277277
for (final ptrRecord in ptrRecords ?? <RRecord>[]) {
278-
final srvRecords =
279-
await DnsUtils.lookupRecord(ptrRecord.name, RRecordType.SRV);
278+
final srvRecords = await DnsUtils.lookupRecord(
279+
ptrRecord.name,
280+
RRecordType.SRV,
281+
provider: DnsApiProvider.CLOUDFLARE,
282+
);
280283

281284
for (final srvRecord in srvRecords ?? <RRecord>[]) {
285+
final serviceName = srvRecord.name;
282286
final srvRecordEntries = srvRecord.data.split(" ");
283287

284-
final validSrvRecord = srvRecordEntries.length == 7;
288+
final validSrvRecord = srvRecordEntries.length == 4;
285289

286290
if (!validSrvRecord) {
287291
continue;
@@ -295,15 +299,20 @@ class ThingDiscovery extends Stream<ThingDescription>
295299
continue;
296300
}
297301

298-
final txtRecords =
299-
await DnsUtils.lookupRecord(srvRecord.name, RRecordType.TXT) ?? [];
302+
final txtRecords = await DnsUtils.lookupRecord(
303+
serviceName,
304+
RRecordType.TXT,
305+
provider: DnsApiProvider.CLOUDFLARE,
306+
) ??
307+
[];
300308

301309
final txtRecord = txtRecords.firstOrNull;
302310

303311
if (txtRecord == null) {
304312
continue;
305313
}
306314

315+
// FIXME: Add parsing of multiple TXT records
307316
final parsedTxtRecord = _parseTxtRecords(txtRecord.data);
308317

309318
final uri = Uri(
@@ -313,15 +322,14 @@ class ThingDiscovery extends Stream<ThingDescription>
313322
scheme: parsedTxtRecord["scheme"] ?? defaultScheme,
314323
);
315324

316-
final duplicate = discoveredUris.add(uri);
325+
final duplicate = !discoveredUris.add(uri);
317326

318327
if (duplicate) {
319328
continue;
320329
}
321330

322331
final type = parsedTxtRecord["type"] ?? defaultType;
323332

324-
print(parsedTxtRecord);
325333
switch (type) {
326334
case "Thing":
327335
yield* _discoverDirectly(uri);

0 commit comments

Comments
 (0)