From d52bce74d3a40d75dcfa3496e67abbed9f1fcba8 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 8 May 2008 11:18:36 +0000 Subject: 2008-05-08 Tatsuhiro Tsujikawa Rewritten name resolver. Now async DNS can be disabled by --async-dns option. The asynchronous DNS is not capable of IPv6 yet. By disabling asynchronous DNS, aria2 is IPv6 enabled application, at least for HTTP download. * src/AbstractCommand.cc * src/AbstractCommand.h * src/AsyncNameResolver.cc * src/AsyncNameResolver.h * src/DHTEntryPointNameResolveCommand.cc * src/DHTEntryPointNameResolveCommand.h * src/DownloadEngine.cc * src/DownloadEngine.h * src/FtpInitiateConnectionCommand.cc * src/FtpInitiateConnectionCommand.h * src/HelpItemFactory.cc * src/HttpInitiateConnectionCommand.cc * src/HttpInitiateConnectionCommand.h * src/InitiateConnectionCommand.cc * src/InitiateConnectionCommand.h * src/Makefile.am * src/Makefile.in * src/NameResolver.cc * src/NameResolver.h * src/OptionHandlerFactory.cc * src/SocketCore.cc * src/SocketCore.h * src/Util.cc * src/Util.h * src/option_processing.cc * src/prefs.h * src/usage_text.h --- src/SocketCore.cc | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) (limited to 'src/SocketCore.cc') diff --git a/src/SocketCore.cc b/src/SocketCore.cc index 76f00d4c..b5ddf701 100644 --- a/src/SocketCore.cc +++ b/src/SocketCore.cc @@ -38,6 +38,7 @@ #include "DlRetryEx.h" #include "DlAbortEx.h" #include "StringFormat.h" +#include "Util.h" #include #include #include @@ -169,20 +170,6 @@ SocketCore* SocketCore::acceptConnection() const return new SocketCore(fd, _sockType); } -std::pair -SocketCore::getNameInfoInNumeric(const struct sockaddr* sockaddr, socklen_t len) -{ - char host[NI_MAXHOST]; - char service[NI_MAXSERV]; - int s = getnameinfo(sockaddr, len, host, NI_MAXHOST, service, NI_MAXSERV, - NI_NUMERICHOST|NI_NUMERICSERV); - if(s != 0) { - throw DlAbortEx(StringFormat("Failed to get hostname and port. cause: %s", - gai_strerror(s)).str()); - } - return std::pair(host, atoi(service)); // TODO -} - void SocketCore::getAddrInfo(std::pair& addrinfo) const { struct sockaddr_storage sockaddr; @@ -191,7 +178,7 @@ void SocketCore::getAddrInfo(std::pair& addrinfo) const if(getsockname(sockfd, addrp, &len) == -1) { throw DlAbortEx(StringFormat(EX_SOCKET_GET_NAME, errorMsg()).str()); } - addrinfo = SocketCore::getNameInfoInNumeric(addrp, len); + addrinfo = Util::getNumericNameInfo(addrp, len); } void SocketCore::getPeerInfo(std::pair& peerinfo) const @@ -202,7 +189,7 @@ void SocketCore::getPeerInfo(std::pair& peerinfo) const if(getpeername(sockfd, addrp, &len) == -1) { throw DlAbortEx(StringFormat(EX_SOCKET_GET_NAME, errorMsg()).str()); } - peerinfo = SocketCore::getNameInfoInNumeric(addrp, len); + peerinfo = Util::getNumericNameInfo(addrp, len); } void SocketCore::establishConnection(const std::string& host, uint16_t port) @@ -679,7 +666,7 @@ ssize_t SocketCore::readDataFrom(char* data, size_t len, if(r == -1) { throw DlAbortEx(StringFormat(EX_SOCKET_RECV, errorMsg()).str()); } - sender = SocketCore::getNameInfoInNumeric(addrp, sockaddrlen); + sender = Util::getNumericNameInfo(addrp, sockaddrlen); return r; } -- cgit