@@ -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