diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-10-04 14:33:49 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-10-04 14:33:49 +0000 |
| commit | 5db7b123b5233d26617c20d6de40921366733040 (patch) | |
| tree | e47f4ee88ee995082f4366f10e9e7e5ef50d2195 /src/AsyncNameResolver.cc | |
| parent | 329de2a9b56ec1e4d533759b9da4725b1b1ffb76 (diff) | |
2010-10-04 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use inet_ntoa if inet_ntop is not available. Since inet_ntoa does
not handle IPv6 address, IPv6 support is limited in this
case. Fixed unit test error under mingw32.
* configure.ac
* src/AsyncNameResolver.cc
* src/SocketCore.cc
* src/bittorrent_helper.cc
* test/BittorrentHelperTest.cc
* test/DHTMessageFactoryImplTest.cc
* test/DHTRoutingTableDeserializerTest.cc
* test/DHTRoutingTableSerializerTest.cc
* test/DefaultBtAnnounceTest.cc
* test/Metalink2RequestGroupTest.cc
* test/UTPexExtensionMessageTest.cc
Diffstat (limited to 'src/AsyncNameResolver.cc')
| -rw-r--r-- | src/AsyncNameResolver.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/AsyncNameResolver.cc b/src/AsyncNameResolver.cc index bf6a34d1..7c7d6320 100644 --- a/src/AsyncNameResolver.cc +++ b/src/AsyncNameResolver.cc @@ -53,15 +53,24 @@ void callback(void* arg, int status, int timeouts, struct hostent* host) return; } for(char** ap = host->h_addr_list; *ap; ++ap) { +#ifdef HAVE_INET_NTOP char addrstring[INET6_ADDRSTRLEN]; const char* dst = inet_ntop(host->h_addrtype, *ap, addrstring, sizeof(addrstring)); if(dst) { resolverPtr->resolvedAddresses_.push_back(dst); } +#else // !HAVE_INET_NTOP + if(host->h_addrtype != AF_INET) { + continue; + } + struct in_addr addr; + memcpy(&addr, *ap, sizeof(in_addr)); + resolverPtr->resolvedAddresses_.push_back(inet_ntoa(addr)); +#endif // !HAVE_INET_NTOP } if(resolverPtr->resolvedAddresses_.empty()) { - resolverPtr->error_ = "inet_ntop failed"; + resolverPtr->error_ = "address conversion failed"; resolverPtr->status_ = AsyncNameResolver::STATUS_ERROR; } else { resolverPtr->status_ = AsyncNameResolver::STATUS_SUCCESS; |
