summaryrefslogtreecommitdiff
path: root/src/SocketCore.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-11-14 23:19:37 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-11-14 23:19:37 +0900
commit27dda3c65c263a9dcc6b4a4e38f67e6ee0bc9a78 (patch)
treecf883a8b6b4f94243c1386c3330097a4f881592b /src/SocketCore.cc
parent97a9242cbe618ac3c2e3e89c30ee8018268e35a3 (diff)
Support IPv6 address for FTP via HTTP tunneling.
We use control connection address as data connection address, so we don't need to store both address and port. We just store port in PASV/EPSV response and use SocketCore::getPeerInfo() to get peer's address when needed.
Diffstat (limited to 'src/SocketCore.cc')
-rw-r--r--src/SocketCore.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/SocketCore.cc b/src/SocketCore.cc
index f0a3b5bb..793dc1bd 100644
--- a/src/SocketCore.cc
+++ b/src/SocketCore.cc
@@ -345,12 +345,13 @@ SocketCore* SocketCore::acceptConnection() const
return new SocketCore(fd, sockType_);
}
-void SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& addrinfo) const
+int SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& addrinfo) const
{
sockaddr_union sockaddr;
socklen_t len = sizeof(sockaddr);
getAddrInfo(sockaddr, len);
addrinfo = util::getNumericNameInfo(&sockaddr.sa, len);
+ return sockaddr.storage.ss_family;
}
void SocketCore::getAddrInfo(sockaddr_union& sockaddr, socklen_t& len) const
@@ -369,7 +370,7 @@ int SocketCore::getAddressFamily() const
return sockaddr.storage.ss_family;
}
-void SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& peerinfo) const
+int SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& peerinfo) const
{
sockaddr_union sockaddr;
socklen_t len = sizeof(sockaddr);
@@ -378,6 +379,7 @@ void SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& peerinfo) const
throw DL_ABORT_EX(fmt(EX_SOCKET_GET_NAME, errorMsg(errNum).c_str()));
}
peerinfo = util::getNumericNameInfo(&sockaddr.sa, len);
+ return sockaddr.storage.ss_family;
}
void SocketCore::establishConnection(const std::string& host, uint16_t port)