/* */ #include "NameResolver.h" #include "DlAbortEx.h" #include "message.h" #include "StringFormat.h" #include "util.h" #include namespace aria2 { NameResolver::NameResolver():_socktype(0) {} void NameResolver::resolve(std::deque& resolvedAddresses, const std::string& hostname) { struct addrinfo hints; struct addrinfo* res; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = _socktype; hints.ai_flags = 0; hints.ai_protocol = 0; int s; s = getaddrinfo(hostname.c_str(), 0, &hints, &res); if(s) { throw DL_ABORT_EX(StringFormat(EX_RESOLVE_HOSTNAME, hostname.c_str(), gai_strerror(s)).str()); } struct addrinfo* rp; for(rp = res; rp; rp = rp->ai_next) { std::pair addressPort = util::getNumericNameInfo(rp->ai_addr, rp->ai_addrlen); resolvedAddresses.push_back(addressPort.first); } freeaddrinfo(res); } void NameResolver::setSocktype(int socktype) { _socktype = socktype; } } // namespace aria2