@@ -278,13 +278,17 @@ class ThingDiscovery extends Stream<ThingDescription>
278278 const defaultType = "Thing" ;
279279
280280 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+ );
283286
284287 for (final srvRecord in srvRecords ?? < RRecord > []) {
288+ final serviceName = srvRecord.name;
285289 final srvRecordEntries = srvRecord.data.split (" " );
286290
287- final validSrvRecord = srvRecordEntries.length == 7 ;
291+ final validSrvRecord = srvRecordEntries.length == 4 ;
288292
289293 if (! validSrvRecord) {
290294 continue ;
@@ -298,15 +302,20 @@ class ThingDiscovery extends Stream<ThingDescription>
298302 continue ;
299303 }
300304
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+ [];
303311
304312 final txtRecord = txtRecords.firstOrNull;
305313
306314 if (txtRecord == null ) {
307315 continue ;
308316 }
309317
318+ // FIXME: Add parsing of multiple TXT records
310319 final parsedTxtRecord = _parseTxtRecords (txtRecord.data);
311320
312321 final uri = Uri (
@@ -316,15 +325,14 @@ class ThingDiscovery extends Stream<ThingDescription>
316325 scheme: parsedTxtRecord["scheme" ] ?? defaultScheme,
317326 );
318327
319- final duplicate = discoveredUris.add (uri);
328+ final duplicate = ! discoveredUris.add (uri);
320329
321330 if (duplicate) {
322331 continue ;
323332 }
324333
325334 final type = parsedTxtRecord["type" ] ?? defaultType;
326335
327- print (parsedTxtRecord);
328336 switch (type) {
329337 case "Thing" :
330338 yield * _discoverDirectly (uri);
0 commit comments