diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-11-14 23:19:37 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-11-14 23:19:37 +0900 |
| commit | 27dda3c65c263a9dcc6b4a4e38f67e6ee0bc9a78 (patch) | |
| tree | cf883a8b6b4f94243c1386c3330097a4f881592b /src/SocketCore.cc | |
| parent | 97a9242cbe618ac3c2e3e89c30ee8018268e35a3 (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.cc | 6 |
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) |
