bitcoin/bitcoin — pull request #4259 by 4tar (2014-05-30 14:34:35+00:00)
Title: Use async name resolving to improve net thread responsiveness

This is the re-submit of PR 4215, just combine all several commits in that PR into one. The previous discussion could be checked here: https://github.com/bitcoin/bitcoin/pull/4215.

In the LookupIntern(), things changed are:
1. Call getaddrinfo_a() instead of getaddrinfo() if available, the former is a sync version of the latter;
2. Try using inet_pton()/inet_addr() to convert the input text to a network addr structure at first, if success the extra name resolving thread inside getaddrinfo_a() could be avoided;
3. An inturrption point added in the waiting loop for return from getaddrinfo_a(), which completes the improve for thread responsiveness.

A easy way to see the effect is to kick off a 'bitcoind top' immediately after 'bitcoind -daemon', before the change it would take several, or even tens of, minutes on a bad network situation to wait the running bitcoind exit, now it costs only seconds.

Signed-off-by: Huang Le <4tarhl@gmail.com>