mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-08 07:09:21 +00:00
Removed ifdef for ipv6.
This commit is contained in:
+1
-82
@@ -109,13 +109,11 @@ public:
|
|||||||
const sockaddr* c_sockaddr() const { return &m_sockaddr; }
|
const sockaddr* c_sockaddr() const { return &m_sockaddr; }
|
||||||
const sockaddr_in* c_sockaddr_inet() const { return &m_sockaddrInet; }
|
const sockaddr_in* c_sockaddr_inet() const { return &m_sockaddrInet; }
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
socket_address_inet6* sa_inet6() { return reinterpret_cast<socket_address_inet6*>(this); }
|
socket_address_inet6* sa_inet6() { return reinterpret_cast<socket_address_inet6*>(this); }
|
||||||
const socket_address_inet6* sa_inet6() const { return reinterpret_cast<const socket_address_inet6*>(this); }
|
const socket_address_inet6* sa_inet6() const { return reinterpret_cast<const socket_address_inet6*>(this); }
|
||||||
|
|
||||||
sockaddr_in6* c_sockaddr_inet6() { return &m_sockaddrInet6; }
|
sockaddr_in6* c_sockaddr_inet6() { return &m_sockaddrInet6; }
|
||||||
const sockaddr_in6* c_sockaddr_inet6() const { return &m_sockaddrInet6; }
|
const sockaddr_in6* c_sockaddr_inet6() const { return &m_sockaddrInet6; }
|
||||||
#endif
|
|
||||||
|
|
||||||
// Copy a socket address which has the length 'length. Zero out any
|
// Copy a socket address which has the length 'length. Zero out any
|
||||||
// extranous bytes and ensure it does not go beyond the size of this
|
// extranous bytes and ensure it does not go beyond the size of this
|
||||||
@@ -139,9 +137,7 @@ private:
|
|||||||
union {
|
union {
|
||||||
sockaddr m_sockaddr;
|
sockaddr m_sockaddr;
|
||||||
sockaddr_in m_sockaddrInet;
|
sockaddr_in m_sockaddrInet;
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
sockaddr_in6 m_sockaddrInet6;
|
sockaddr_in6 m_sockaddrInet6;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -185,9 +181,7 @@ public:
|
|||||||
const sockaddr* c_sockaddr() const { return reinterpret_cast<const sockaddr*>(&m_sockaddr); }
|
const sockaddr* c_sockaddr() const { return reinterpret_cast<const sockaddr*>(&m_sockaddr); }
|
||||||
const sockaddr_in* c_sockaddr_inet() const { return &m_sockaddr; }
|
const sockaddr_in* c_sockaddr_inet() const { return &m_sockaddr; }
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
socket_address_inet6 to_mapped_address() const;
|
socket_address_inet6 to_mapped_address() const;
|
||||||
#endif
|
|
||||||
|
|
||||||
bool operator == (const socket_address_inet& rhs) const;
|
bool operator == (const socket_address_inet& rhs) const;
|
||||||
bool operator < (const socket_address_inet& rhs) const;
|
bool operator < (const socket_address_inet& rhs) const;
|
||||||
@@ -196,9 +190,6 @@ private:
|
|||||||
struct sockaddr_in m_sockaddr;
|
struct sockaddr_in m_sockaddr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
// Remember to set the AF_INET6.
|
|
||||||
|
|
||||||
class socket_address_inet6 {
|
class socket_address_inet6 {
|
||||||
public:
|
public:
|
||||||
bool is_any() const { return is_port_any() && is_address_any(); }
|
bool is_any() const { return is_port_any() && is_address_any(); }
|
||||||
@@ -214,6 +205,7 @@ public:
|
|||||||
void set_port_n(uint16_t p) { m_sockaddr.sin6_port = p; }
|
void set_port_n(uint16_t p) { m_sockaddr.sin6_port = p; }
|
||||||
|
|
||||||
in6_addr address() const { return m_sockaddr.sin6_addr; }
|
in6_addr address() const { return m_sockaddr.sin6_addr; }
|
||||||
|
const in6_addr* address_ptr() const { return &m_sockaddr.sin6_addr; }
|
||||||
std::string address_str() const;
|
std::string address_str() const;
|
||||||
bool address_c_str(char* buf, socklen_t size) const;
|
bool address_c_str(char* buf, socklen_t size) const;
|
||||||
|
|
||||||
@@ -240,61 +232,14 @@ public:
|
|||||||
private:
|
private:
|
||||||
struct sockaddr_in6 m_sockaddr;
|
struct sockaddr_in6 m_sockaddr;
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
// Unique key for the address, excluding port numbers etc.
|
|
||||||
class socket_address_key {
|
|
||||||
public:
|
|
||||||
// socket_address_host_key() {}
|
|
||||||
|
|
||||||
socket_address_key(const socket_address& sa) {
|
|
||||||
*this = sa;
|
|
||||||
}
|
|
||||||
|
|
||||||
socket_address_key& operator = (const socket_address& sa) {
|
|
||||||
if (sa.family() == 0) {
|
|
||||||
std::memset(this, 0, sizeof(socket_address_key));
|
|
||||||
|
|
||||||
} else if (sa.family() == socket_address::af_inet) {
|
|
||||||
// Using hardware order as we use operator < to compare when
|
|
||||||
// using inet only.
|
|
||||||
m_addr.s_addr = sa.sa_inet()->address_h();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// When we implement INET6 handling, embed the ipv4 address in
|
|
||||||
// the ipv6 address.
|
|
||||||
throw std::logic_error("socket_address_key(...) received an unsupported protocol family.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// socket_address_key& operator = (const socket_address_key& sa) {
|
|
||||||
// }
|
|
||||||
|
|
||||||
bool operator < (const socket_address_key& sa) const {
|
|
||||||
// Compare the memory area instead.
|
|
||||||
return m_addr.s_addr < sa.m_addr.s_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
union {
|
|
||||||
in_addr m_addr;
|
|
||||||
// #ifdef RAK_USE_INET6
|
|
||||||
// in_addr6 m_addr6;
|
|
||||||
// #endif
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
socket_address::is_valid() const {
|
socket_address::is_valid() const {
|
||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sa_inet()->is_valid();
|
return sa_inet()->is_valid();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sa_inet6()->is_valid();
|
return sa_inet6()->is_valid();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -305,10 +250,8 @@ socket_address::is_bindable() const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return !sa_inet()->is_address_any();
|
return !sa_inet()->is_address_any();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return !sa_inet6()->is_address_any();
|
return !sa_inet6()->is_address_any();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -319,10 +262,8 @@ socket_address::is_address_any() const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sa_inet()->is_address_any();
|
return sa_inet()->is_address_any();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sa_inet6()->is_address_any();
|
return sa_inet6()->is_address_any();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -333,10 +274,8 @@ socket_address::port() const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sa_inet()->port();
|
return sa_inet()->port();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sa_inet6()->port();
|
return sa_inet6()->port();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -347,10 +286,8 @@ socket_address::set_port(uint16_t p) {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sa_inet()->set_port(p);
|
return sa_inet()->set_port(p);
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sa_inet6()->set_port(p);
|
return sa_inet6()->set_port(p);
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -361,10 +298,8 @@ socket_address::address_str() const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sa_inet()->address_str();
|
return sa_inet()->address_str();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sa_inet6()->address_str();
|
return sa_inet6()->address_str();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
@@ -375,10 +310,8 @@ socket_address::address_c_str(char* buf, socklen_t size) const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sa_inet()->address_c_str(buf, size);
|
return sa_inet()->address_c_str(buf, size);
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sa_inet6()->address_c_str(buf, size);
|
return sa_inet6()->address_c_str(buf, size);
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -390,11 +323,9 @@ socket_address::set_address_c_str(const char* a) {
|
|||||||
sa_inet()->set_family();
|
sa_inet()->set_family();
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
} else if (sa_inet6()->set_address_c_str(a)) {
|
} else if (sa_inet6()->set_address_c_str(a)) {
|
||||||
sa_inet6()->set_family();
|
sa_inet6()->set_family();
|
||||||
return true;
|
return true;
|
||||||
#endif
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@@ -407,10 +338,8 @@ socket_address::length() const {
|
|||||||
switch(family()) {
|
switch(family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return sizeof(sockaddr_in);
|
return sizeof(sockaddr_in);
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return sizeof(sockaddr_in6);
|
return sizeof(sockaddr_in6);
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -435,10 +364,8 @@ socket_address::operator == (const socket_address& rhs) const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return *sa_inet() == *rhs.sa_inet();
|
return *sa_inet() == *rhs.sa_inet();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return *sa_inet6() == *rhs.sa_inet6();
|
return *sa_inet6() == *rhs.sa_inet6();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
throw std::logic_error("socket_address::operator == (rhs) invalid type comparison.");
|
throw std::logic_error("socket_address::operator == (rhs) invalid type comparison.");
|
||||||
}
|
}
|
||||||
@@ -452,10 +379,8 @@ socket_address::operator < (const socket_address& rhs) const {
|
|||||||
switch (family()) {
|
switch (family()) {
|
||||||
case af_inet:
|
case af_inet:
|
||||||
return *sa_inet() < *rhs.sa_inet();
|
return *sa_inet() < *rhs.sa_inet();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
case af_inet6:
|
case af_inet6:
|
||||||
return *sa_inet6() < *rhs.sa_inet6();
|
return *sa_inet6() < *rhs.sa_inet6();
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
throw std::logic_error("socket_address::operator < (rhs) invalid type comparison.");
|
throw std::logic_error("socket_address::operator < (rhs) invalid type comparison.");
|
||||||
}
|
}
|
||||||
@@ -481,7 +406,6 @@ socket_address_inet::set_address_c_str(const char* a) {
|
|||||||
return inet_pton(AF_INET, a, &m_sockaddr.sin_addr);
|
return inet_pton(AF_INET, a, &m_sockaddr.sin_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
inline socket_address_inet6
|
inline socket_address_inet6
|
||||||
socket_address_inet::to_mapped_address() const {
|
socket_address_inet::to_mapped_address() const {
|
||||||
uint32_t addr32[4];
|
uint32_t addr32[4];
|
||||||
@@ -496,7 +420,6 @@ socket_address_inet::to_mapped_address() const {
|
|||||||
sa.set_port_n(m_sockaddr.sin_port);
|
sa.set_port_n(m_sockaddr.sin_port);
|
||||||
return sa;
|
return sa;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
socket_address_inet::operator == (const socket_address_inet& rhs) const {
|
socket_address_inet::operator == (const socket_address_inet& rhs) const {
|
||||||
@@ -513,8 +436,6 @@ socket_address_inet::operator < (const socket_address_inet& rhs) const {
|
|||||||
m_sockaddr.sin_port < rhs.m_sockaddr.sin_port);
|
m_sockaddr.sin_port < rhs.m_sockaddr.sin_port);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
|
|
||||||
inline std::string
|
inline std::string
|
||||||
socket_address_inet6::address_str() const {
|
socket_address_inet6::address_str() const {
|
||||||
char buf[INET6_ADDRSTRLEN];
|
char buf[INET6_ADDRSTRLEN];
|
||||||
@@ -564,8 +485,6 @@ socket_address_inet6::operator < (const socket_address_inet6& rhs) const {
|
|||||||
m_sockaddr.sin6_port < rhs.m_sockaddr.sin6_port);
|
m_sockaddr.sin6_port < rhs.m_sockaddr.sin6_port);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -308,13 +308,10 @@ apply_d_add_peer(core::Download* download, const std::string& arg) {
|
|||||||
if (download->download()->info()->is_private())
|
if (download->download()->info()->is_private())
|
||||||
throw torrent::input_error("Download is private.");
|
throw torrent::input_error("Download is private.");
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
ret = std::sscanf(arg.c_str(), "[%64[^]]]:%i%c", host, &port, &dummy);
|
ret = std::sscanf(arg.c_str(), "[%64[^]]]:%i%c", host, &port, &dummy);
|
||||||
|
|
||||||
if (ret < 1)
|
if (ret < 1)
|
||||||
ret = std::sscanf(arg.c_str(), "%1023[^:]:%i%c", host, &port, &dummy);
|
ret = std::sscanf(arg.c_str(), "%1023[^:]:%i%c", host, &port, &dummy);
|
||||||
#else
|
|
||||||
ret = std::sscanf(arg.c_str(), "%1023[^:]:%i%c", host, &port, &dummy);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (ret == 1)
|
if (ret == 1)
|
||||||
port = 6881;
|
port = 6881;
|
||||||
@@ -324,11 +321,7 @@ apply_d_add_peer(core::Download* download, const std::string& arg) {
|
|||||||
if (port < 1 || port > 65535)
|
if (port < 1 || port > 65535)
|
||||||
throw torrent::input_error("Invalid port number.");
|
throw torrent::input_error("Invalid port number.");
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
torrent::connection_manager()->resolver()(host, (int)rak::socket_address::pf_unspec, SOCK_STREAM, call_add_d_peer_t(download, port));
|
torrent::connection_manager()->resolver()(host, (int)rak::socket_address::pf_unspec, SOCK_STREAM, call_add_d_peer_t(download, port));
|
||||||
#else
|
|
||||||
torrent::connection_manager()->resolver()(host, (int)rak::socket_address::pf_inet, SOCK_STREAM, call_add_d_peer_t(download, port));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
torrent::Object
|
torrent::Object
|
||||||
|
|||||||
@@ -170,12 +170,8 @@ apply_scgi(const std::string& arg, int type) {
|
|||||||
lt_log_print(torrent::LOG_RPC_EVENTS,
|
lt_log_print(torrent::LOG_RPC_EVENTS,
|
||||||
"The SCGI socket has not been bound to any address and likely poses a security risk.");
|
"The SCGI socket has not been bound to any address and likely poses a security risk.");
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
} else if (std::sscanf(arg.c_str(), "%1023[^:]:%i%c", address, &port, &dummy) == 2 ||
|
} else if (std::sscanf(arg.c_str(), "%1023[^:]:%i%c", address, &port, &dummy) == 2 ||
|
||||||
std::sscanf(arg.c_str(), "[%64[^]]]:%i%c", address, &port, &dummy) == 2) { // [xx::xx]:port format
|
std::sscanf(arg.c_str(), "[%64[^]]]:%i%c", address, &port, &dummy) == 2) { // [xx::xx]:port format
|
||||||
#else
|
|
||||||
} else if (std::sscanf(arg.c_str(), "%1023[^:]:%i%c", address, &port, &dummy) == 2) {
|
|
||||||
#endif
|
|
||||||
if ((err = rak::address_info::get_address_info(address,PF_UNSPEC, SOCK_STREAM, &ai)) != 0)
|
if ((err = rak::address_info::get_address_info(address,PF_UNSPEC, SOCK_STREAM, &ai)) != 0)
|
||||||
throw torrent::input_error("Could not bind address: " + std::string(rak::address_info::strerror(err)) + ".");
|
throw torrent::input_error("Could not bind address: " + std::string(rak::address_info::strerror(err)) + ".");
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -70,12 +70,11 @@ retrieve_p_id_html(torrent::Peer* peer) {
|
|||||||
torrent::Object
|
torrent::Object
|
||||||
retrieve_p_address(torrent::Peer* peer) {
|
retrieve_p_address(torrent::Peer* peer) {
|
||||||
const rak::socket_address *addr = rak::socket_address::cast_from(peer->peer_info()->socket_address());
|
const rak::socket_address *addr = rak::socket_address::cast_from(peer->peer_info()->socket_address());
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (addr->family() == rak::socket_address::af_inet6)
|
if (addr->family() == rak::socket_address::af_inet6)
|
||||||
return "[" + addr->address_str() + "]";
|
return "[" + addr->address_str() + "]";
|
||||||
else
|
else
|
||||||
#endif
|
return addr->address_str();
|
||||||
return addr->address_str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
torrent::Object
|
torrent::Object
|
||||||
|
|||||||
@@ -95,9 +95,8 @@ CurlGet::start() {
|
|||||||
curl_easy_setopt(m_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_WHATEVER);
|
curl_easy_setopt(m_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_WHATEVER);
|
||||||
|
|
||||||
curl_easy_setopt(m_handle, CURLOPT_ENCODING, "");
|
curl_easy_setopt(m_handle, CURLOPT_ENCODING, "");
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
m_ipv6 = false;
|
m_ipv6 = false;
|
||||||
#endif
|
|
||||||
|
|
||||||
m_stack->add_get(this);
|
m_stack->add_get(this);
|
||||||
}
|
}
|
||||||
@@ -115,16 +114,16 @@ CurlGet::close() {
|
|||||||
m_handle = NULL;
|
m_handle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
void
|
void
|
||||||
CurlGet::retry_ipv6() {
|
CurlGet::retry_ipv6() {
|
||||||
CURL* nhandle = curl_easy_duphandle(m_handle);
|
CURL* nhandle = curl_easy_duphandle(m_handle);
|
||||||
|
|
||||||
curl_easy_setopt(nhandle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
|
curl_easy_setopt(nhandle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
|
||||||
curl_easy_cleanup(m_handle);
|
curl_easy_cleanup(m_handle);
|
||||||
|
|
||||||
m_handle = nhandle;
|
m_handle = nhandle;
|
||||||
m_ipv6 = true;
|
m_ipv6 = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CurlGet::receive_timeout() {
|
CurlGet::receive_timeout() {
|
||||||
|
|||||||
+1
-4
@@ -57,10 +57,9 @@ public:
|
|||||||
|
|
||||||
void start();
|
void start();
|
||||||
void close();
|
void close();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
bool is_using_ipv6() { return m_ipv6; }
|
bool is_using_ipv6() { return m_ipv6; }
|
||||||
void retry_ipv6();
|
void retry_ipv6();
|
||||||
#endif
|
|
||||||
|
|
||||||
bool is_busy() const { return m_handle; }
|
bool is_busy() const { return m_handle; }
|
||||||
bool is_active() const { return m_active; }
|
bool is_active() const { return m_active; }
|
||||||
@@ -79,9 +78,7 @@ private:
|
|||||||
void receive_timeout();
|
void receive_timeout();
|
||||||
|
|
||||||
bool m_active;
|
bool m_active;
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
bool m_ipv6;
|
bool m_ipv6;
|
||||||
#endif
|
|
||||||
|
|
||||||
rak::priority_item m_taskTimeout;
|
rak::priority_item m_taskTimeout;
|
||||||
|
|
||||||
|
|||||||
@@ -228,13 +228,8 @@ Manager::set_bind_address(const std::string& addr) {
|
|||||||
int err;
|
int err;
|
||||||
rak::address_info* ai;
|
rak::address_info* ai;
|
||||||
|
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if ((err = rak::address_info::get_address_info(addr.c_str(), PF_INET, SOCK_STREAM, &ai)) != 0 &&
|
if ((err = rak::address_info::get_address_info(addr.c_str(), PF_INET, SOCK_STREAM, &ai)) != 0 &&
|
||||||
(err = rak::address_info::get_address_info(addr.c_str(), PF_INET6, SOCK_STREAM, &ai)) != 0)
|
(err = rak::address_info::get_address_info(addr.c_str(), PF_INET6, SOCK_STREAM, &ai)) != 0)
|
||||||
#else
|
|
||||||
if ((err = rak::address_info::get_address_info(addr.c_str(), PF_INET, SOCK_STREAM, &ai)) != 0)
|
|
||||||
#endif
|
|
||||||
throw torrent::input_error("Could not set bind address: " + std::string(rak::address_info::strerror(err)) + ".");
|
throw torrent::input_error("Could not set bind address: " + std::string(rak::address_info::strerror(err)) + ".");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -268,12 +263,8 @@ Manager::set_local_address(const std::string& addr) {
|
|||||||
int err;
|
int err;
|
||||||
rak::address_info* ai;
|
rak::address_info* ai;
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if ((err = rak::address_info::get_address_info(addr.c_str(), PF_INET, SOCK_STREAM, &ai)) != 0 &&
|
if ((err = rak::address_info::get_address_info(addr.c_str(), PF_INET, SOCK_STREAM, &ai)) != 0 &&
|
||||||
(err = rak::address_info::get_address_info(addr.c_str(), PF_INET6, SOCK_STREAM, &ai)) != 0)
|
(err = rak::address_info::get_address_info(addr.c_str(), PF_INET6, SOCK_STREAM, &ai)) != 0)
|
||||||
#else
|
|
||||||
if ((err = rak::address_info::get_address_info(addr.c_str(), PF_INET, SOCK_STREAM, &ai)) != 0)
|
|
||||||
#endif
|
|
||||||
throw torrent::input_error("Could not set local address: " + std::string(rak::address_info::strerror(err)) + ".");
|
throw torrent::input_error("Could not set local address: " + std::string(rak::address_info::strerror(err)) + ".");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -68,11 +68,7 @@ WindowPeerList::redraw() {
|
|||||||
int x = 2;
|
int x = 2;
|
||||||
int y = 0;
|
int y = 0;
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
m_canvas->print(x, y, "IP"); x += 25;
|
m_canvas->print(x, y, "IP"); x += 25;
|
||||||
#else
|
|
||||||
m_canvas->print(x, y, "IP"); x += 16;
|
|
||||||
#endif
|
|
||||||
m_canvas->print(x, y, "UP"); x += 7;
|
m_canvas->print(x, y, "UP"); x += 7;
|
||||||
m_canvas->print(x, y, "DOWN"); x += 7;
|
m_canvas->print(x, y, "DOWN"); x += 7;
|
||||||
m_canvas->print(x, y, "PEER"); x += 7;
|
m_canvas->print(x, y, "PEER"); x += 7;
|
||||||
@@ -104,20 +100,15 @@ WindowPeerList::redraw() {
|
|||||||
x = 0;
|
x = 0;
|
||||||
|
|
||||||
std::string ip_address = rak::socket_address::cast_from(p->address())->address_str();
|
std::string ip_address = rak::socket_address::cast_from(p->address())->address_str();
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (ip_address.size() >= 24) {
|
if (ip_address.size() >= 24) {
|
||||||
ip_address.replace(ip_address.begin() + 21, ip_address.end(), "...");
|
ip_address.replace(ip_address.begin() + 21, ip_address.end(), "...");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
m_canvas->print(x, y, "%c %s",
|
m_canvas->print(x, y, "%c %s",
|
||||||
range.first == *m_focus ? '*' : ' ',
|
range.first == *m_focus ? '*' : ' ',
|
||||||
ip_address.c_str());
|
ip_address.c_str());
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
x += 27;
|
x += 27;
|
||||||
#else
|
|
||||||
x += 18;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_canvas->print(x, y, "%.1f", (double)p->up_rate()->rate() / 1024); x += 7;
|
m_canvas->print(x, y, "%.1f", (double)p->up_rate()->rate() / 1024); x += 7;
|
||||||
m_canvas->print(x, y, "%.1f", (double)p->down_rate()->rate() / 1024); x += 7;
|
m_canvas->print(x, y, "%.1f", (double)p->down_rate()->rate() / 1024); x += 7;
|
||||||
|
|||||||
+6
-23
@@ -71,12 +71,10 @@ SocketFd::set_priority(priority_type p) {
|
|||||||
check_valid();
|
check_valid();
|
||||||
int opt = p;
|
int opt = p;
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (m_ipv6_socket)
|
if (m_ipv6_socket)
|
||||||
return setsockopt(m_fd, IPPROTO_IPV6, IPV6_TCLASS, &opt, sizeof(opt)) == 0;
|
return setsockopt(m_fd, IPPROTO_IPV6, IPV6_TCLASS, &opt, sizeof(opt)) == 0;
|
||||||
else
|
else
|
||||||
#endif
|
return setsockopt(m_fd, IPPROTO_IP, IP_TOS, &opt, sizeof(opt)) == 0;
|
||||||
return setsockopt(m_fd, IPPROTO_IP, IP_TOS, &opt, sizeof(opt)) == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@@ -135,24 +133,21 @@ SocketFd::get_error() const {
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
SocketFd::open_stream() {
|
SocketFd::open_stream() {
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
m_fd = socket(rak::socket_address::pf_inet6, SOCK_STREAM, IPPROTO_TCP);
|
m_fd = socket(rak::socket_address::pf_inet6, SOCK_STREAM, IPPROTO_TCP);
|
||||||
|
|
||||||
if (m_fd == -1) {
|
if (m_fd == -1) {
|
||||||
m_ipv6_socket = false;
|
m_ipv6_socket = false;
|
||||||
return (m_fd = socket(rak::socket_address::pf_inet, SOCK_STREAM, IPPROTO_TCP)) != -1;
|
return (m_fd = socket(rak::socket_address::pf_inet, SOCK_STREAM, IPPROTO_TCP)) != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ipv6_socket = true;
|
m_ipv6_socket = true;
|
||||||
|
|
||||||
int zero = 0;
|
int zero = 0;
|
||||||
return setsockopt(m_fd, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)) != -1;
|
return setsockopt(m_fd, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)) != -1;
|
||||||
#else
|
|
||||||
return (m_fd = socket(rak::socket_address::pf_inet, SOCK_STREAM, IPPROTO_TCP)) != -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
SocketFd::open_datagram() {
|
SocketFd::open_datagram() {
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
m_fd = socket(rak::socket_address::pf_inet6, SOCK_DGRAM, 0);
|
m_fd = socket(rak::socket_address::pf_inet6, SOCK_DGRAM, 0);
|
||||||
if (m_fd == -1) {
|
if (m_fd == -1) {
|
||||||
m_ipv6_socket = false;
|
m_ipv6_socket = false;
|
||||||
@@ -162,9 +157,6 @@ SocketFd::open_datagram() {
|
|||||||
|
|
||||||
int zero = 0;
|
int zero = 0;
|
||||||
return setsockopt(m_fd, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)) != -1;
|
return setsockopt(m_fd, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)) != -1;
|
||||||
#else
|
|
||||||
return (m_fd = socket(rak::socket_address::pf_inet, SOCK_DGRAM, 0)) != -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@@ -182,12 +174,11 @@ bool
|
|||||||
SocketFd::bind(const rak::socket_address& sa) {
|
SocketFd::bind(const rak::socket_address& sa) {
|
||||||
check_valid();
|
check_valid();
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (m_ipv6_socket && sa.family() == rak::socket_address::pf_inet) {
|
if (m_ipv6_socket && sa.family() == rak::socket_address::pf_inet) {
|
||||||
rak::socket_address_inet6 sa_mapped = sa.sa_inet()->to_mapped_address();
|
rak::socket_address_inet6 sa_mapped = sa.sa_inet()->to_mapped_address();
|
||||||
return !::bind(m_fd, sa_mapped.c_sockaddr(), sizeof(sa_mapped));
|
return !::bind(m_fd, sa_mapped.c_sockaddr(), sizeof(sa_mapped));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return !::bind(m_fd, sa.c_sockaddr(), sa.length());
|
return !::bind(m_fd, sa.c_sockaddr(), sa.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,12 +186,11 @@ bool
|
|||||||
SocketFd::bind(const rak::socket_address& sa, unsigned int length) {
|
SocketFd::bind(const rak::socket_address& sa, unsigned int length) {
|
||||||
check_valid();
|
check_valid();
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (m_ipv6_socket && sa.family() == rak::socket_address::pf_inet) {
|
if (m_ipv6_socket && sa.family() == rak::socket_address::pf_inet) {
|
||||||
rak::socket_address_inet6 sa_mapped = sa.sa_inet()->to_mapped_address();
|
rak::socket_address_inet6 sa_mapped = sa.sa_inet()->to_mapped_address();
|
||||||
return !::bind(m_fd, sa_mapped.c_sockaddr(), sizeof(sa_mapped));
|
return !::bind(m_fd, sa_mapped.c_sockaddr(), sizeof(sa_mapped));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return !::bind(m_fd, sa.c_sockaddr(), length);
|
return !::bind(m_fd, sa.c_sockaddr(), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,12 +198,11 @@ bool
|
|||||||
SocketFd::connect(const rak::socket_address& sa) {
|
SocketFd::connect(const rak::socket_address& sa) {
|
||||||
check_valid();
|
check_valid();
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (m_ipv6_socket && sa.family() == rak::socket_address::pf_inet) {
|
if (m_ipv6_socket && sa.family() == rak::socket_address::pf_inet) {
|
||||||
rak::socket_address_inet6 sa_mapped = sa.sa_inet()->to_mapped_address();
|
rak::socket_address_inet6 sa_mapped = sa.sa_inet()->to_mapped_address();
|
||||||
return !::connect(m_fd, sa_mapped.c_sockaddr(), sizeof(sa_mapped)) || errno == EINPROGRESS;
|
return !::connect(m_fd, sa_mapped.c_sockaddr(), sizeof(sa_mapped)) || errno == EINPROGRESS;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return !::connect(m_fd, sa.c_sockaddr(), sa.length()) || errno == EINPROGRESS;
|
return !::connect(m_fd, sa.c_sockaddr(), sa.length()) || errno == EINPROGRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,11 +215,9 @@ SocketFd::getsockname(rak::socket_address *sa) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (m_ipv6_socket && sa->family() == rak::socket_address::af_inet6) {
|
if (m_ipv6_socket && sa->family() == rak::socket_address::af_inet6) {
|
||||||
*sa = sa->sa_inet6()->normalize_address();
|
*sa = sa->sa_inet6()->normalize_address();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -247,7 +234,6 @@ SocketFd::accept(rak::socket_address* sa) {
|
|||||||
check_valid();
|
check_valid();
|
||||||
socklen_t len = sizeof(rak::socket_address);
|
socklen_t len = sizeof(rak::socket_address);
|
||||||
|
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
if (sa == NULL) {
|
if (sa == NULL) {
|
||||||
return SocketFd(::accept(m_fd, NULL, &len));
|
return SocketFd(::accept(m_fd, NULL, &len));
|
||||||
}
|
}
|
||||||
@@ -256,9 +242,6 @@ SocketFd::accept(rak::socket_address* sa) {
|
|||||||
*sa = sa->sa_inet6()->normalize_address();
|
*sa = sa->sa_inet6()->normalize_address();
|
||||||
}
|
}
|
||||||
return SocketFd(fd);
|
return SocketFd(fd);
|
||||||
#else
|
|
||||||
return SocketFd(::accept(m_fd, sa != NULL ? sa->c_sockaddr() : NULL, &len));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// unsigned int
|
// unsigned int
|
||||||
|
|||||||
@@ -92,9 +92,7 @@ private:
|
|||||||
inline void check_valid() const;
|
inline void check_valid() const;
|
||||||
|
|
||||||
int m_fd;
|
int m_fd;
|
||||||
#ifdef RAK_USE_INET6
|
|
||||||
bool m_ipv6_socket;
|
bool m_ipv6_socket;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user