On 2010/07/27 09:24, Andreas Raab wrote:
Folks -
I just finished another fun little protocol implementation. DnsClient is a client for DNS lookups of all sorts. Why implement the DNS protocol you ask? Well, because 1) it's fun, 2) it's educational, and 3) it's non-blocking. The latter is actually interesting, we've found that occasionally we get very long VM blocking due to synchronous name lookup performed in the Unix socket code.
You can install DnsClient from Squeaksource:
(Installer ss project: 'ar') install: 'DnsClient-Core'; "all the code" install: 'DnsClient-Tests'; "the tests" install: 'DnsClient-Hacks'. "use DnsClient when present"
DnsClient should work well but beware that on Windows it will currently use the deefault fallback name servers (Google DNS and OpenDNS) since I still need to implement the primitive to return the proper resolv.conf content (which is spread out in the Windows registry). Consequently, if you're trying look up local names or if you are behind a firewall, these addresses will fail until I've implemented the primitive proper.
Nice!
So if one wanted to implement some of the stranger records - NAPTR springs to mind - one would just hack DnsRecord>>readFrom: and add an appropriate case, yes? (For NAPTR (RFC 2915) that's 35).
(SIP uses NAPTR records as part of its lookup mechanism, defined in RFC 3263 SIP: Locating SIP Servers.)
The attached OUGHT to do it. I don't know of any public servers that user NAPTR *cough* and I'd need to look up local names to properly test against my local test setup.
frank