Why Asynchronous DNS
resiprocate uses the ares asynchronous dns library from MIT. We use a forked version of ares that is in the contrib subdirectory of the resip project. The main differences between the MIT version and the resip forked version are that numerous bugs have been fixed particularly on win32 architectures and IPV6 support has been added.
It is impossible to know ahead of time how long a dns query will take. If the dns client library is synchronous care must be taken in the application to avoid blocking while a result is being retrieved. There are two methods of dealing with this problem: asynchronous blah, blah, blah