summaryrefslogtreecommitdiff
path: root/src/SocketCore.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-08 11:18:36 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-08 11:18:36 +0000
commitd52bce74d3a40d75dcfa3496e67abbed9f1fcba8 (patch)
tree09c82779bd07f661340800db790e68fe612ca56c /src/SocketCore.cc
parentd8f911b5815f2f6857b1c0035182391e5d6ecaf5 (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.cc21
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;
}