header fix and refactor in udp_tracker_connection and typos in lazy_entry

This commit is contained in:
Alden Torres 2016-12-14 14:09:18 -05:00 committed by Arvid Norberg
parent 139528aae4
commit f715ebfd97
3 changed files with 19 additions and 29 deletions

View File

@ -116,7 +116,7 @@ namespace libtorrent
// to know how many characters follow. // to know how many characters follow.
char const* ptr; char const* ptr;
// lexicographical comparison of strings. Order is consisten // lexicographical comparison of strings. Order is consistent
// with memcmp. // with memcmp.
bool operator<(pascal_string const& rhs) const bool operator<(pascal_string const& rhs) const
{ {
@ -131,7 +131,7 @@ namespace libtorrent
// type whose concrete type is one of: // type whose concrete type is one of:
// //
// 1. dictionary (maps strings -> lazy_entry) // 1. dictionary (maps strings -> lazy_entry)
// 2. list (sequence of lazy_entry, i.e. heterogenous) // 2. list (sequence of lazy_entry, i.e. heterogeneous)
// 3. integer // 3. integer
// 4. string // 4. string
// //

View File

@ -39,10 +39,12 @@ POSSIBILITY OF SUCH DAMAGE.
#include <mutex> #include <mutex>
#include <cstdint> #include <cstdint>
#include <memory> #include <memory>
#include <map>
#include "libtorrent/udp_socket.hpp" #include "libtorrent/udp_socket.hpp"
#include "libtorrent/tracker_manager.hpp" #include "libtorrent/tracker_manager.hpp"
#include "libtorrent/config.hpp" #include "libtorrent/config.hpp"
#include "libtorrent/span.hpp"
namespace libtorrent namespace libtorrent
{ {

View File

@ -36,7 +36,6 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/parse_url.hpp" #include "libtorrent/parse_url.hpp"
#include "libtorrent/udp_tracker_connection.hpp" #include "libtorrent/udp_tracker_connection.hpp"
#include "libtorrent/io.hpp"
#include "libtorrent/hex.hpp" #include "libtorrent/hex.hpp"
#include "libtorrent/broadcast_socket.hpp" // for is_any #include "libtorrent/broadcast_socket.hpp" // for is_any
#include "libtorrent/random.hpp" #include "libtorrent/random.hpp"
@ -45,15 +44,12 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/ip_filter.hpp" #include "libtorrent/ip_filter.hpp"
#include "libtorrent/aux_/time.hpp" #include "libtorrent/aux_/time.hpp"
#include "libtorrent/aux_/io.hpp" #include "libtorrent/aux_/io.hpp"
#include "libtorrent/span.hpp"
#include "libtorrent/peer.hpp" #include "libtorrent/peer.hpp"
#ifndef TORRENT_DISABLE_LOGGING #ifndef TORRENT_DISABLE_LOGGING
#include "libtorrent/socket_io.hpp" #include "libtorrent/socket_io.hpp"
#endif #endif
using namespace std::placeholders;
namespace libtorrent namespace libtorrent
{ {
@ -84,8 +80,7 @@ namespace libtorrent
int port; int port;
error_code ec; error_code ec;
using std::ignore; std::tie(protocol, std::ignore, hostname, port, std::ignore)
std::tie(protocol, ignore, hostname, port, ignore)
= parse_url_components(tracker_req().url, ec); = parse_url_components(tracker_req().url, ec);
if (port == -1) port = protocol == "http" ? 80 : 443; if (port == -1) port = protocol == "http" ? 80 : 443;
@ -107,6 +102,7 @@ namespace libtorrent
} }
else else
{ {
using namespace std::placeholders;
ADD_OUTSTANDING_ASYNC("udp_tracker_connection::name_lookup"); ADD_OUTSTANDING_ASYNC("udp_tracker_connection::name_lookup");
// when stopping, pass in the prefer cache flag, because we // when stopping, pass in the prefer cache flag, because we
// don't want to get stuck on DNS lookups when shutting down // don't want to get stuck on DNS lookups when shutting down
@ -135,7 +131,7 @@ namespace libtorrent
, char const* msg, int interval, int min_interval) , char const* msg, int interval, int min_interval)
{ {
// m_target failed. remove it from the endpoint list // m_target failed. remove it from the endpoint list
std::vector<tcp::endpoint>::iterator i = std::find(m_endpoints.begin() auto const i = std::find(m_endpoints.begin()
, m_endpoints.end(), tcp::endpoint(m_target.address(), m_target.port())); , m_endpoints.end(), tcp::endpoint(m_target.address(), m_target.port()));
if (i != m_endpoints.end()) m_endpoints.erase(i); if (i != m_endpoints.end()) m_endpoints.erase(i);
@ -204,15 +200,13 @@ namespace libtorrent
// we're listening on. To make sure the tracker get our // we're listening on. To make sure the tracker get our
// correct listening address. // correct listening address.
for (std::vector<address>::const_iterator i = addresses.begin() for (auto const& addr : addresses)
, end(addresses.end()); i != end; ++i) m_endpoints.push_back(tcp::endpoint(addr, std::uint16_t(port)));
m_endpoints.push_back(tcp::endpoint(*i, std::uint16_t(port)));
if (tracker_req().filter) if (tracker_req().filter)
{ {
// remove endpoints that are filtered by the IP filter // remove endpoints that are filtered by the IP filter
for (std::vector<tcp::endpoint>::iterator k = m_endpoints.begin(); for (auto k = m_endpoints.begin(); k != m_endpoints.end();)
k != m_endpoints.end();)
{ {
if (tracker_req().filter->access(k->address()) == ip_filter::blocked) if (tracker_req().filter->access(k->address()) == ip_filter::blocked)
{ {
@ -283,8 +277,7 @@ namespace libtorrent
void udp_tracker_connection::start_announce() void udp_tracker_connection::start_announce()
{ {
std::unique_lock<std::mutex> l(m_cache_mutex); std::unique_lock<std::mutex> l(m_cache_mutex);
std::map<address, connection_cache_entry>::iterator cc auto const cc = m_connection_cache.find(m_target.address());
= m_connection_cache.find(m_target.address());
if (cc != m_connection_cache.end()) if (cc != m_connection_cache.end())
{ {
// we found a cached entry! Now, we can only // we found a cached entry! Now, we can only
@ -467,7 +460,7 @@ namespace libtorrent
// reset transaction // reset transaction
update_transaction_id(); update_transaction_id();
std::uint64_t const connection_id = aux::read_int64(buf); std::int64_t const connection_id = aux::read_int64(buf);
std::lock_guard<std::mutex> l(m_cache_mutex); std::lock_guard<std::mutex> l(m_cache_mutex);
connection_cache_entry& cce = m_connection_cache[m_target.address()]; connection_cache_entry& cce = m_connection_cache[m_target.address()];
@ -554,8 +547,7 @@ namespace libtorrent
{ {
if (m_abort) return; if (m_abort) return;
std::map<address, connection_cache_entry>::iterator i auto const i = m_connection_cache.find(m_target.address());
= m_connection_cache.find(m_target.address());
// this isn't really supposed to happen // this isn't really supposed to happen
TORRENT_ASSERT(i != m_connection_cache.end()); TORRENT_ASSERT(i != m_connection_cache.end());
if (i == m_connection_cache.end()) return; if (i == m_connection_cache.end()) return;
@ -632,17 +624,16 @@ namespace libtorrent
for (int i = 0; i < num_peers; ++i) for (int i = 0; i < num_peers; ++i)
{ {
ipv4_peer_entry e; ipv4_peer_entry e;
memcpy(&e.ip[0], buf.data(), 4); std::memcpy(e.ip.data(), buf.data(), 4);
buf = buf.subspan(4); buf = buf.subspan(4);
e.port = aux::read_uint16(buf); e.port = aux::read_uint16(buf);
resp.peers4.push_back(e); resp.peers4.push_back(e);
} }
std::list<address> ip_list; std::list<address> ip_list;
for (std::vector<tcp::endpoint>::const_iterator i = m_endpoints.begin() for (auto const& endp : m_endpoints)
, end(m_endpoints.end()); i != end; ++i)
{ {
ip_list.push_back(i->address()); ip_list.push_back(endp.address());
} }
cb->tracker_response(tracker_req(), m_target.address(), ip_list cb->tracker_response(tracker_req(), m_target.address(), ip_list
@ -711,8 +702,7 @@ namespace libtorrent
tracker_request const& req = tracker_req(); tracker_request const& req = tracker_req();
aux::session_settings const& settings = m_man.settings(); aux::session_settings const& settings = m_man.settings();
std::map<address, connection_cache_entry>::iterator i auto const i = m_connection_cache.find(m_target.address());
= m_connection_cache.find(m_target.address());
// this isn't really supposed to happen // this isn't really supposed to happen
TORRENT_ASSERT(i != m_connection_cache.end()); TORRENT_ASSERT(i != m_connection_cache.end());
if (i == m_connection_cache.end()) return; if (i == m_connection_cache.end()) return;
@ -773,14 +763,12 @@ namespace libtorrent
if (!m_hostname.empty()) if (!m_hostname.empty())
{ {
m_man.send_hostname(m_hostname.c_str() m_man.send_hostname(m_hostname.c_str()
, m_target.port(), span<char const>(buf , m_target.port(), {buf, std::size_t(sizeof(buf) - out.size())}, ec
, int(sizeof(buf) - out.size())), ec
, udp_socket::tracker_connection); , udp_socket::tracker_connection);
} }
else else
{ {
m_man.send(m_target, span<char const>(buf m_man.send(m_target, {buf, std::size_t(sizeof(buf) - out.size())}, ec
, int(sizeof(buf) - out.size())), ec
, udp_socket::tracker_connection); , udp_socket::tracker_connection);
} }
m_state = action_t::announce; m_state = action_t::announce;