/* */ #include "NameResolver.h" #include #include "DlAbortEx.h" #include "message.h" #include "StringFormat.h" #include "util.h" #include "SocketCore.h" namespace aria2 { NameResolver::NameResolver():_socktype(0), _family(AF_UNSPEC) {} void NameResolver::resolve(std::deque& resolvedAddresses, const std::string& hostname) { struct addrinfo* res; int s; s = callGetaddrinfo(&res, hostname.c_str(), 0, _family, _socktype, 0, 0); if(s) { throw DL_ABORT_EX(StringFormat(EX_RESOLVE_HOSTNAME, hostname.c_str(), gai_strerror(s)).str()); } auto_delete resDeleter(res, freeaddrinfo); 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); } } void NameResolver::setSocktype(int socktype) { _socktype = socktype; } } // namespace aria2