diff --git a/ChangeLog b/ChangeLog index b2d8bb5d..c78ac941 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-05-11 Tatsuhiro Tsujikawa + + Changed method signature: + NameResolver::resolve + * src/DHTEntryPointNameResolveCommand.cc + * src/InitiateConnectionCommand.cc + * src/NameResolver.cc + * src/NameResolver.h + 2008-05-11 Tatsuhiro Tsujikawa Changed method signature: diff --git a/src/DHTEntryPointNameResolveCommand.cc b/src/DHTEntryPointNameResolveCommand.cc index 9ee4b663..8ebce6f5 100644 --- a/src/DHTEntryPointNameResolveCommand.cc +++ b/src/DHTEntryPointNameResolveCommand.cc @@ -108,7 +108,8 @@ bool DHTEntryPointNameResolveCommand::execute() while(_entryPoints.size()) { std::string hostname = _entryPoints.front().first; try { - std::deque addrs(res.resolve(hostname)); + std::deque addrs; + res.resolve(addrs, hostname); std::pair p(addrs.front(), _entryPoints.front().second); diff --git a/src/InitiateConnectionCommand.cc b/src/InitiateConnectionCommand.cc index 0c651a8e..2ad02174 100644 --- a/src/InitiateConnectionCommand.cc +++ b/src/InitiateConnectionCommand.cc @@ -85,7 +85,7 @@ bool InitiateConnectionCommand::executeInternal() { { NameResolver res; res.setSocktype(SOCK_STREAM); - addrs = res.resolve(hostname); + res.resolve(addrs, hostname); } logger->info(MSG_NAME_RESOLUTION_COMPLETE, cuid, hostname.c_str(), diff --git a/src/NameResolver.cc b/src/NameResolver.cc index 1b7f4e50..32229a58 100644 --- a/src/NameResolver.cc +++ b/src/NameResolver.cc @@ -43,7 +43,8 @@ namespace aria2 { NameResolver::NameResolver():_socktype(0) {} -std::deque NameResolver::resolve(const std::string& hostname) +void NameResolver::resolve(std::deque& resolvedAddresses, + const std::string& hostname) { struct addrinfo hints; struct addrinfo* res; @@ -58,16 +59,13 @@ std::deque NameResolver::resolve(const std::string& hostname) throw DlAbortEx(StringFormat(EX_RESOLVE_HOSTNAME, hostname.c_str(), gai_strerror(s)).str()); } - std::deque addrs; struct addrinfo* rp; for(rp = res; rp; rp = rp->ai_next) { std::pair addressPort = Util::getNumericNameInfo(rp->ai_addr, rp->ai_addrlen); - addrs.push_back(addressPort.first); + resolvedAddresses.push_back(addressPort.first); } freeaddrinfo(res); - - return addrs; } void NameResolver::setSocktype(int socktype) diff --git a/src/NameResolver.h b/src/NameResolver.h index 814d8732..5620aff3 100644 --- a/src/NameResolver.h +++ b/src/NameResolver.h @@ -47,7 +47,11 @@ private: public: NameResolver(); - std::deque resolve(const std::string& hostname); + /** + * Reolved addresses are pushed into addresses. + */ + void resolve(std::deque& resolvedAddresses, + const std::string& hostname); // specify SOCK_STREAM or SOCK_DGRAM void setSocktype(int socktype);