Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix honoring system.file.allocate.set=1 rtorrent config setting #109

Closed
wants to merge 48 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
5770f61
Applied ipv6 patch.
rakshasa Aug 14, 2014
e14dd06
Removed ifdef for ipv6.
rakshasa Aug 19, 2014
ac6dc62
Merge branch 'master' into ipv6
rakshasa Sep 6, 2014
e3b6ff4
Fixed clang warnings.
rakshasa Sep 6, 2014
06e8a5b
Updated authors and readme.
rakshasa Sep 15, 2014
62a72bc
Update to inet6 sock address class.
rakshasa Sep 18, 2014
4a4e971
Added socket_address_key that does not depend on rak socket_adddress.
rakshasa Sep 18, 2014
abf37da
Updated peer_list to use new socket address key.
rakshasa Sep 18, 2014
c02721d
Added test classes for socket_address_key.
rakshasa Sep 18, 2014
099d220
Added tests for basic inet4 address lookup tests.
rakshasa Sep 19, 2014
0500ef7
Added conversion of inet6 to socket address key.
rakshasa Sep 19, 2014
54fa023
Added direct conversion from sin_addr and sin6_addr to socket_address…
rakshasa Sep 20, 2014
1711b35
Removed socket_address_key from rak headers.
rakshasa Sep 20, 2014
a6b6733
Moved network related headers to torrent/net.
rakshasa Sep 23, 2014
ad95b31
Use inet6 if bind is not set.
rakshasa Sep 23, 2014
11b6b4f
Fixed missing header files.
rakshasa Sep 24, 2014
b80b558
Fixed link local addresses.
rakshasa Oct 28, 2014
846b363
Fix honoring system.file.allocate.set=1 rtorrent config setting (See #5)
Aug 23, 2016
4f7f45a
Merge branch 'master' into ipv6
rakshasa Aug 29, 2016
c97b462
Send correct network-ordered port number in PEX messages.
rakshasa Sep 5, 2016
6f51b39
Merge branch 'master' into ipv6
rakshasa Oct 10, 2016
4d305e3
Merge pull request #113 from rakshasa/ipv6
rakshasa Oct 10, 2016
f694548
Cleaned up logging for tracker_udp.
rakshasa Oct 18, 2016
8206582
Only attempt to bind tracker udp address if bind_address is bindable.
rakshasa Oct 19, 2016
25f6ea2
Added conftest.* to gitignore.
rakshasa Oct 19, 2016
bc8b509
Changed how udp tracker hostname is looked up to support inet6.
rakshasa Oct 19, 2016
382fe39
Merge pull request #115 from rakshasa/fix-udp-trackers
rakshasa Oct 19, 2016
2bc6fff
Added dht_all logging.
rakshasa Oct 22, 2016
79d5fb1
Added dht_manager log group.
rakshasa Oct 22, 2016
9204c70
DHT logging.
rakshasa Oct 22, 2016
6cd3fd3
Fixed dht when bind address is not bound while using IPv6.
rakshasa Oct 22, 2016
defccf0
Merge pull request #117 from rakshasa/fix-dht
rakshasa Oct 22, 2016
b8b24b5
Use pkg-config for cppunit.
rakshasa Oct 22, 2016
01dd69c
Merge pull request #118 from rakshasa/fix-cppunit
rakshasa Oct 23, 2016
7a59675
Feature travis (#119)
rakshasa Oct 23, 2016
856d9ca
Eliminate use-after-free in DHT Server (#120)
anthonyryan1 Oct 26, 2016
767f5d0
Don't check the HAVE_CXX11 macro (#121)
klusark Oct 31, 2016
5594501
Calculate coverage for coveralls.io (#122)
klusark Nov 1, 2016
f466d36
Remove stray getifaddrs(), it's output was unused and freeifaddrs() (…
anthonyryan1 Nov 4, 2016
8d64035
Bug Fixes for 123,124,125,126,129 and 130 (#131)
Nov 13, 2016
bd3e2a5
Drop packets everywhere we're deleting DhtTransaction's (#135)
anthonyryan1 Nov 13, 2016
d0b7724
Fix BEP7 compatibility with IPv6 trackers and IPv4 peers
anthonyryan1 Nov 13, 2016
c3c74f8
Fix BEP7 compatibility with IPv6 trackers and IPv4 peers (#137)
rakshasa Nov 15, 2016
267be8e
BEP7 remove IPv4 escaping
anthonyryan1 Dec 11, 2016
c167c5a
Merge pull request #139 from anthonyryan1/master
rakshasa Dec 12, 2016
678893e
Modify system.file.allocate.set=1 patch (See #5)
May 15, 2017
8aba988
Merge branch 'fix_honoring_file_allocate_1' of https://github.com/chr…
May 15, 2017
fa56007
Fix merging conflict with previous pull request (See #5)
May 15, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Removed ifdef for ipv6.
  • Loading branch information
rakshasa committed Aug 19, 2014
commit e14dd067efe9f29cf11f8e72e69c74e30c4adca1
1 change: 0 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ TORRENT_CHECK_EXECINFO()
TORRENT_CHECK_PTHREAD_SETNAME_NP()
TORRENT_MINCORE()

TORRENT_DISABLE_IPV6
TORRENT_DISABLE_INSTRUMENTATION

LIBTORRENT_LIBS="-ltorrent"
Expand Down
40 changes: 0 additions & 40 deletions rak/socket_address.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,11 @@ class socket_address {
const sockaddr* c_sockaddr() const { return &m_sockaddr; }
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); }
const socket_address_inet6* sa_inet6() const { return reinterpret_cast<const socket_address_inet6*>(this); }

sockaddr_in6* c_sockaddr_inet6() { 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
// extranous bytes and ensure it does not go beyond the size of this
Expand All @@ -139,9 +137,7 @@ class socket_address {
union {
sockaddr m_sockaddr;
sockaddr_in m_sockaddrInet;
#ifdef RAK_USE_INET6
sockaddr_in6 m_sockaddrInet6;
#endif
};
};

Expand Down Expand Up @@ -185,9 +181,7 @@ class socket_address_inet {
const sockaddr* c_sockaddr() const { return reinterpret_cast<const sockaddr*>(&m_sockaddr); }
const sockaddr_in* c_sockaddr_inet() const { return &m_sockaddr; }

#ifdef RAK_USE_INET6
socket_address_inet6 to_mapped_address() const;
#endif

bool operator == (const socket_address_inet& rhs) const;
bool operator < (const socket_address_inet& rhs) const;
Expand All @@ -196,9 +190,6 @@ class socket_address_inet {
struct sockaddr_in m_sockaddr;
};

#ifdef RAK_USE_INET6
// Remember to set the AF_INET6.

class socket_address_inet6 {
public:
bool is_any() const { return is_port_any() && is_address_any(); }
Expand Down Expand Up @@ -240,7 +231,6 @@ class socket_address_inet6 {
private:
struct sockaddr_in6 m_sockaddr;
};
#endif

// Unique key for the address, excluding port numbers etc.
class socket_address_key {
Expand Down Expand Up @@ -280,9 +270,7 @@ class socket_address_key {
private:
union {
in_addr m_addr;
// #ifdef RAK_USE_INET6
// in_addr6 m_addr6;
// #endif
};
};

Expand All @@ -291,10 +279,8 @@ socket_address::is_valid() const {
switch (family()) {
case af_inet:
return sa_inet()->is_valid();
#ifdef RAK_USE_INET6
case af_inet6:
return sa_inet6()->is_valid();
#endif
default:
return false;
}
Expand All @@ -305,10 +291,8 @@ socket_address::is_bindable() const {
switch (family()) {
case af_inet:
return !sa_inet()->is_address_any();
#ifdef RAK_USE_INET6
case af_inet6:
return !sa_inet6()->is_address_any();
#endif
default:
return false;
}
Expand All @@ -319,10 +303,8 @@ socket_address::is_address_any() const {
switch (family()) {
case af_inet:
return sa_inet()->is_address_any();
#ifdef RAK_USE_INET6
case af_inet6:
return sa_inet6()->is_address_any();
#endif
default:
return true;
}
Expand All @@ -333,10 +315,8 @@ socket_address::port() const {
switch (family()) {
case af_inet:
return sa_inet()->port();
#ifdef RAK_USE_INET6
case af_inet6:
return sa_inet6()->port();
#endif
default:
return 0;
}
Expand All @@ -347,10 +327,8 @@ socket_address::set_port(uint16_t p) {
switch (family()) {
case af_inet:
return sa_inet()->set_port(p);
#ifdef RAK_USE_INET6
case af_inet6:
return sa_inet6()->set_port(p);
#endif
default:
break;
}
Expand All @@ -361,10 +339,8 @@ socket_address::address_str() const {
switch (family()) {
case af_inet:
return sa_inet()->address_str();
#ifdef RAK_USE_INET6
case af_inet6:
return sa_inet6()->address_str();
#endif
default:
return std::string();
}
Expand All @@ -375,10 +351,8 @@ socket_address::address_c_str(char* buf, socklen_t size) const {
switch (family()) {
case af_inet:
return sa_inet()->address_c_str(buf, size);
#ifdef RAK_USE_INET6
case af_inet6:
return sa_inet6()->address_c_str(buf, size);
#endif
default:
return false;
}
Expand All @@ -390,11 +364,9 @@ socket_address::set_address_c_str(const char* a) {
sa_inet()->set_family();
return true;

#ifdef RAK_USE_INET6
} else if (sa_inet6()->set_address_c_str(a)) {
sa_inet6()->set_family();
return true;
#endif

} else {
return false;
Expand All @@ -407,10 +379,8 @@ socket_address::length() const {
switch(family()) {
case af_inet:
return sizeof(sockaddr_in);
#ifdef RAK_USE_INET6
case af_inet6:
return sizeof(sockaddr_in6);
#endif
default:
return 0;
}
Expand All @@ -435,10 +405,8 @@ socket_address::operator == (const socket_address& rhs) const {
switch (family()) {
case af_inet:
return *sa_inet() == *rhs.sa_inet();
#ifdef RAK_USE_INET6
case af_inet6:
return *sa_inet6() == *rhs.sa_inet6();
#endif
default:
throw std::logic_error("socket_address::operator == (rhs) invalid type comparison.");
}
Expand All @@ -452,10 +420,8 @@ socket_address::operator < (const socket_address& rhs) const {
switch (family()) {
case af_inet:
return *sa_inet() < *rhs.sa_inet();
#ifdef RAK_USE_INET6
case af_inet6:
return *sa_inet6() < *rhs.sa_inet6();
#endif
default:
throw std::logic_error("socket_address::operator < (rhs) invalid type comparison.");
}
Expand All @@ -481,7 +447,6 @@ socket_address_inet::set_address_c_str(const char* a) {
return inet_pton(AF_INET, a, &m_sockaddr.sin_addr);
}

#ifdef RAK_USE_INET6
inline socket_address_inet6
socket_address_inet::to_mapped_address() const {
uint32_t addr32[4];
Expand All @@ -496,7 +461,6 @@ socket_address_inet::to_mapped_address() const {
sa.set_port_n(m_sockaddr.sin_port);
return sa;
}
#endif

inline bool
socket_address_inet::operator == (const socket_address_inet& rhs) const {
Expand All @@ -513,8 +477,6 @@ socket_address_inet::operator < (const socket_address_inet& rhs) const {
m_sockaddr.sin_port < rhs.m_sockaddr.sin_port);
}

#ifdef RAK_USE_INET6

inline std::string
socket_address_inet6::address_str() const {
char buf[INET6_ADDRSTRLEN];
Expand Down Expand Up @@ -564,8 +526,6 @@ socket_address_inet6::operator < (const socket_address_inet6& rhs) const {
m_sockaddr.sin6_port < rhs.m_sockaddr.sin6_port);
}

#endif

}

#endif
11 changes: 0 additions & 11 deletions scripts/common.m4
Original file line number Diff line number Diff line change
Expand Up @@ -229,14 +229,3 @@ AC_DEFUN([TORRENT_ENABLE_INTERRUPT_SOCKET], [
]
)
])


AC_DEFUN([TORRENT_DISABLE_IPV6], [
AC_ARG_ENABLE(ipv6,
AC_HELP_STRING([--enable-ipv6], [enable ipv6 [[default=no]]]),
[
if test "$enableval" = "yes"; then
AC_DEFINE(RAK_USE_INET6, 1, enable ipv6 stuff)
fi
])
])
15 changes: 4 additions & 11 deletions src/dht/dht_node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,9 @@ DhtNode::DhtNode(const HashString& id, const rak::socket_address* sa) :
m_recentlyInactive(0),
m_bucket(NULL) {

#ifdef RAK_USE_INET6
if (sa->family() != rak::socket_address::af_inet &&
(sa->family() != rak::socket_address::af_inet6 ||
!sa->sa_inet6()->is_any()))
(sa->family() != rak::socket_address::af_inet6 || !sa->sa_inet6()->is_any()))
throw resource_error("Addres not af_inet or in6addr_any");
#else
if (sa->family() != rak::socket_address::af_inet)
throw resource_error("Address not af_inet");
#endif
}

DhtNode::DhtNode(const std::string& id, const Object& cache) :
Expand Down Expand Up @@ -91,20 +85,19 @@ DhtNode::store_compact(char* buffer) const {

Object*
DhtNode::store_cache(Object* container) const {
#ifdef RAK_USE_INET6
if (m_socketAddress.family() == rak::socket_address::af_inet6) {
// Currently, all we support is in6addr_any (checked in the constructor),
// which is effectively equivalent to this. Note that we need to specify
// int64_t explicitly here because a zero constant is special in C++ and
// thus we need an explicit match.
container->insert_key("i", int64_t(0));
container->insert_key("p", m_socketAddress.sa_inet6()->port());
} else
#endif
{

} else {
container->insert_key("i", m_socketAddress.sa_inet()->address_h());
container->insert_key("p", m_socketAddress.sa_inet()->port());
}

container->insert_key("t", m_lastSeen);
return container;
}
Expand Down
2 changes: 0 additions & 2 deletions src/dht/dht_server.cc
Original file line number Diff line number Diff line change
Expand Up @@ -701,12 +701,10 @@ DhtServer::event_read() {
if (read < 0)
break;

#ifdef RAK_USE_INET6
// We can currently only process mapped-IPv4 addresses, not real IPv6.
// Translate them to an af_inet socket_address.
if (sa.family() == rak::socket_address::af_inet6)
sa = sa.sa_inet6()->normalize_address();
#endif

if (sa.family() != rak::socket_address::af_inet)
continue;
Expand Down
2 changes: 0 additions & 2 deletions src/net/address_list.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ AddressList::parse_address_compact(raw_string s) {
std::back_inserter(*this));
}

#ifdef RAK_USE_INET6
void
AddressList::parse_address_compact_ipv6(const std::string& s) {
if (sizeof(const SocketAddressCompact6) != 18)
Expand All @@ -87,7 +86,6 @@ AddressList::parse_address_compact_ipv6(const std::string& s) {
reinterpret_cast<const SocketAddressCompact6*>(s.c_str() + s.size() - s.size() % sizeof(SocketAddressCompact6)),
std::back_inserter(*this));
}
#endif

void
AddressList::parse_address_bencode(raw_list s) {
Expand Down
4 changes: 0 additions & 4 deletions src/net/address_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,7 @@ class AddressList : public std::list<rak::socket_address> {

void parse_address_compact(raw_string s);
void parse_address_compact(const std::string& s);
#ifdef RAK_USE_INET6
void parse_address_compact_ipv6(const std::string& s);
#endif

private:
static rak::socket_address parse_address(const Object& b);
Expand Down Expand Up @@ -102,7 +100,6 @@ struct SocketAddressCompact {
const char* c_str() const { return reinterpret_cast<const char*>(this); }
} __attribute__ ((packed));

#ifdef RAK_USE_INET6
struct SocketAddressCompact6 {
SocketAddressCompact6() {}
SocketAddressCompact6(in6_addr a, uint16_t p) : addr(a), port(p) {}
Expand All @@ -122,7 +119,6 @@ struct SocketAddressCompact6 {

const char* c_str() const { return reinterpret_cast<const char*>(this); }
} __attribute__ ((packed));
#endif

}

Expand Down
Loading