diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-08 11:18:36 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-08 11:18:36 +0000 |
| commit | d52bce74d3a40d75dcfa3496e67abbed9f1fcba8 (patch) | |
| tree | 09c82779bd07f661340800db790e68fe612ca56c /src/SocketCore.cc | |
| parent | d8f911b5815f2f6857b1c0035182391e5d6ecaf5 (diff) | |
2008-05-08 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
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
Diffstat (limited to 'src/SocketCore.cc')
| -rw-r--r-- | src/SocketCore.cc | 21 |
1 files changed, 4 insertions, 17 deletions
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 <unistd.h> #include <cerrno> #include <cstring> @@ -169,20 +170,6 @@ SocketCore* SocketCore::acceptConnection() const return new SocketCore(fd, _sockType); } -std::pair<std::string, uint16_t> -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<std::string, uint16_t>(host, atoi(service)); // TODO -} - void SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& addrinfo) const { struct sockaddr_storage sockaddr; @@ -191,7 +178,7 @@ void SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& 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<std::string, uint16_t>& peerinfo) const @@ -202,7 +189,7 @@ void SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& 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; } |
