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