apple / swift-async-dns-resolver

A Swift library for asynchronous DNS requests, wrapping c-ares with Swift-friendly APIs and data structures.
Apache License 2.0
82 stars 12 forks source link

DNSSD based queries fail to provide TTL #39

Open gmilos opened 1 month ago

gmilos commented 1 month ago

On macOS (where DNSSD is being used by default), queries such as:

let resolver = try AsyncDNSResolver()
let out = try await resolver.queryAAAA(name: "iadsdk.apple.com.akadns.net")
print("\(out)")

fail to provide the TTL:

[AAAARecord(address=2a02:26f0:5d00:f91::12c5, ttl=), AAAARecord(address=2a02:26f0:5d00:f9b::12c5, ttl=)]

Despite the fact TTL is certainly available:

$ dig AAAA iadsdk.apple.com.akadns.net
...
e4805.dsca.akamaiedge.net. 3    IN  AAAA    2a02:26f0:5d00:f9b::12c5
                           ↑
                          TTL
...

The TTL is available, if the c-ares underlying implementation is used:

let resolver = try AsyncDNSResolver(CAresDNSResolver())
let out = try await resolver.queryAAAA(name: "e4805.dsca.akamaiedge.net")
print("\(out)") 

results in:

[AAAARecord(address=2a02:26f0:5d00:f91::12c5, ttl=13), AAAARecord(address=2a02:26f0:5d00:f9b::12c5, ttl=13)]

Tested on: https://github.com/apple/swift-async-dns-resolver/releases/tag/0.4.0