diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-07-30 14:45:35 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-07-30 14:45:35 +0000 |
| commit | 7958ce43662d8dd070f2ca71c06ca630198568ef (patch) | |
| tree | 023ab57b1c8f575ef3b55895447d9bba49474e26 /src/SocketCore.cc | |
| parent | 20b7c8cd0e058ba74bc311c855db6111726276ef (diff) | |
2010-07-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added FTP EPSV and EPRT command support. aria2 issues these
commands when address family of local socket is AF_INET6.
* src/FtpConnection.cc
* src/FtpConnection.h
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
* src/SocketCore.cc
* src/SocketCore.h
* test/FtpConnectionTest.cc
Diffstat (limited to 'src/SocketCore.cc')
| -rw-r--r-- | src/SocketCore.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/SocketCore.cc b/src/SocketCore.cc index cb6602f8..7d8b076b 100644 --- a/src/SocketCore.cc +++ b/src/SocketCore.cc @@ -341,11 +341,26 @@ void SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& addrinfo) const { struct sockaddr_storage sockaddr; socklen_t len = sizeof(sockaddr); + getAddrInfo(sockaddr, len); + addrinfo = util::getNumericNameInfo + (reinterpret_cast<const struct sockaddr*>(&sockaddr), len); +} + +void SocketCore::getAddrInfo +(struct sockaddr_storage& sockaddr, socklen_t& len) const +{ struct sockaddr* addrp = reinterpret_cast<struct sockaddr*>(&sockaddr); if(getsockname(sockfd_, addrp, &len) == -1) { throw DL_ABORT_EX(StringFormat(EX_SOCKET_GET_NAME, errorMsg()).str()); } - addrinfo = util::getNumericNameInfo(addrp, len); +} + +int SocketCore::getAddressFamily() const +{ + struct sockaddr_storage sockaddr; + socklen_t len = sizeof(sockaddr); + getAddrInfo(sockaddr, len); + return sockaddr.ss_family; } void SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& peerinfo) const |
