From 72060e86762b6e276c547e731c158f278efaabda Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Mon, 19 Jul 2010 05:27:33 +0000 Subject: [PATCH] removed DHT mutex since everything is in the network thread now --- include/libtorrent/kademlia/dht_tracker.hpp | 4 --- src/kademlia/dht_tracker.cpp | 30 +++++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/include/libtorrent/kademlia/dht_tracker.hpp b/include/libtorrent/kademlia/dht_tracker.hpp index a448c2cdd..112ac331d 100644 --- a/include/libtorrent/kademlia/dht_tracker.hpp +++ b/include/libtorrent/kademlia/dht_tracker.hpp @@ -128,10 +128,6 @@ namespace libtorrent { namespace dht dht_settings const& m_settings; int m_refresh_bucket; - // The mutex is used to abort the dht node - // it's only used to set m_abort to true - typedef mutex mutex_t; - mutable mutex_t m_mutex; bool m_abort; // used to resolve hostnames for nodes diff --git a/src/kademlia/dht_tracker.cpp b/src/kademlia/dht_tracker.cpp index 26ead3ed1..eb8db07fa 100644 --- a/src/kademlia/dht_tracker.cpp +++ b/src/kademlia/dht_tracker.cpp @@ -249,9 +249,9 @@ namespace libtorrent { namespace dht void dht_tracker::start(entry const& bootstrap) { + TORRENT_ASSERT(m_ses.is_network_thread()); std::vector initial_nodes; - mutex_t::scoped_lock l(m_mutex); if (bootstrap.type() == entry::dictionary_t) { #ifndef BOOST_NO_EXCEPTIONS @@ -280,7 +280,7 @@ namespace libtorrent { namespace dht void dht_tracker::stop() { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); m_abort = true; error_code ec; m_timer.cancel(ec); @@ -291,13 +291,13 @@ namespace libtorrent { namespace dht void dht_tracker::dht_status(session_status& s) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); m_dht.status(s); } void dht_tracker::network_stats(int& sent, int& received) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); sent = m_sent_bytes; received = m_received_bytes; m_sent_bytes = 0; @@ -306,7 +306,7 @@ namespace libtorrent { namespace dht void dht_tracker::connection_timeout(error_code const& e) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); if (e || m_abort) return; time_duration d = m_dht.connection_timeout(); @@ -317,7 +317,7 @@ namespace libtorrent { namespace dht void dht_tracker::refresh_timeout(error_code const& e) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); if (e || m_abort) return; m_dht.tick(); @@ -329,7 +329,7 @@ namespace libtorrent { namespace dht void dht_tracker::tick(error_code const& e) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); if (e || m_abort) return; error_code ec; @@ -432,14 +432,14 @@ namespace libtorrent { namespace dht void dht_tracker::announce(sha1_hash const& ih, int listen_port , boost::function const&)> f) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); m_dht.announce(ih, listen_port, f); } void dht_tracker::on_unreachable(udp::endpoint const& ep) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); m_dht.unreachable(ep); } @@ -447,7 +447,7 @@ namespace libtorrent { namespace dht // used by the library void dht_tracker::on_receive(udp::endpoint const& ep, char const* buf, int bytes_transferred) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); // account for IP and UDP overhead m_received_bytes += bytes_transferred + (ep.address().is_v6() ? 48 : 28); @@ -551,7 +551,7 @@ namespace libtorrent { namespace dht entry dht_tracker::state() const { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); entry ret(entry::dictionary_t); { entry nodes(entry::list_t); @@ -576,13 +576,13 @@ namespace libtorrent { namespace dht void dht_tracker::add_node(udp::endpoint node) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); m_dht.add_node(node); } void dht_tracker::add_node(std::pair const& node) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); char port[7]; snprintf(port, sizeof(port), "%d", node.second); udp::resolver::query q(node.first, port); @@ -593,13 +593,14 @@ namespace libtorrent { namespace dht void dht_tracker::on_name_lookup(error_code const& e , udp::resolver::iterator host) { + TORRENT_ASSERT(m_ses.is_network_thread()); if (e || host == udp::resolver::iterator()) return; add_node(host->endpoint()); } void dht_tracker::add_router_node(udp::endpoint const& node) { - mutex_t::scoped_lock l(m_mutex); + TORRENT_ASSERT(m_ses.is_network_thread()); m_dht.add_router_node(node); } @@ -608,6 +609,7 @@ namespace libtorrent { namespace dht bool dht_tracker::send_packet(libtorrent::entry const& e, udp::endpoint const& addr, int send_flags) { + TORRENT_ASSERT(m_ses.is_network_thread()); using libtorrent::bencode; using libtorrent::entry;