@@ -275,13 +275,17 @@ class ThingDiscovery extends Stream<ThingDescription>
275
275
const defaultType = "Thing" ;
276
276
277
277
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
+ );
280
283
281
284
for (final srvRecord in srvRecords ?? < RRecord > []) {
285
+ final serviceName = srvRecord.name;
282
286
final srvRecordEntries = srvRecord.data.split (" " );
283
287
284
- final validSrvRecord = srvRecordEntries.length == 7 ;
288
+ final validSrvRecord = srvRecordEntries.length == 4 ;
285
289
286
290
if (! validSrvRecord) {
287
291
continue ;
@@ -295,15 +299,20 @@ class ThingDiscovery extends Stream<ThingDescription>
295
299
continue ;
296
300
}
297
301
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
+ [];
300
308
301
309
final txtRecord = txtRecords.firstOrNull;
302
310
303
311
if (txtRecord == null ) {
304
312
continue ;
305
313
}
306
314
315
+ // FIXME: Add parsing of multiple TXT records
307
316
final parsedTxtRecord = _parseTxtRecords (txtRecord.data);
308
317
309
318
final uri = Uri (
@@ -313,15 +322,14 @@ class ThingDiscovery extends Stream<ThingDescription>
313
322
scheme: parsedTxtRecord["scheme" ] ?? defaultScheme,
314
323
);
315
324
316
- final duplicate = discoveredUris.add (uri);
325
+ final duplicate = ! discoveredUris.add (uri);
317
326
318
327
if (duplicate) {
319
328
continue ;
320
329
}
321
330
322
331
final type = parsedTxtRecord["type" ] ?? defaultType;
323
332
324
- print (parsedTxtRecord);
325
333
switch (type) {
326
334
case "Thing" :
327
335
yield * _discoverDirectly (uri);
0 commit comments