@@ -276,13 +276,17 @@ class ThingDiscovery extends Stream<ThingDescription>
276276 const defaultType = "Thing" ;
277277
278278 for (final ptrRecord in ptrRecords ?? < RRecord > []) {
279- final srvRecords =
280- await DnsUtils .lookupRecord (ptrRecord.name, RRecordType .SRV );
279+ final srvRecords = await DnsUtils .lookupRecord (
280+ ptrRecord.name,
281+ RRecordType .SRV ,
282+ provider: DnsApiProvider .CLOUDFLARE ,
283+ );
281284
282285 for (final srvRecord in srvRecords ?? < RRecord > []) {
286+ final serviceName = srvRecord.name;
283287 final srvRecordEntries = srvRecord.data.split (" " );
284288
285- final validSrvRecord = srvRecordEntries.length == 7 ;
289+ final validSrvRecord = srvRecordEntries.length == 4 ;
286290
287291 if (! validSrvRecord) {
288292 continue ;
@@ -296,15 +300,20 @@ class ThingDiscovery extends Stream<ThingDescription>
296300 continue ;
297301 }
298302
299- final txtRecords =
300- await DnsUtils .lookupRecord (srvRecord.name, RRecordType .TXT ) ?? [];
303+ final txtRecords = await DnsUtils .lookupRecord (
304+ serviceName,
305+ RRecordType .TXT ,
306+ provider: DnsApiProvider .CLOUDFLARE ,
307+ ) ??
308+ [];
301309
302310 final txtRecord = txtRecords.firstOrNull;
303311
304312 if (txtRecord == null ) {
305313 continue ;
306314 }
307315
316+ // FIXME: Add parsing of multiple TXT records
308317 final parsedTxtRecord = _parseTxtRecords (txtRecord.data);
309318
310319 final uri = Uri (
@@ -314,15 +323,14 @@ class ThingDiscovery extends Stream<ThingDescription>
314323 scheme: parsedTxtRecord["scheme" ] ?? defaultScheme,
315324 );
316325
317- final duplicate = discoveredUris.add (uri);
326+ final duplicate = ! discoveredUris.add (uri);
318327
319328 if (duplicate) {
320329 continue ;
321330 }
322331
323332 final type = parsedTxtRecord["type" ] ?? defaultType;
324333
325- print (parsedTxtRecord);
326334 switch (type) {
327335 case "Thing" :
328336 yield * _discoverDirectly (uri);
0 commit comments