/* */ #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::vector& 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()); } WSAAPI_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