diff --git a/docs/hunspell/libtorrent.dic b/docs/hunspell/libtorrent.dic index c6d9c2414..9189e1aba 100644 --- a/docs/hunspell/libtorrent.dic +++ b/docs/hunspell/libtorrent.dic @@ -470,3 +470,4 @@ libFuzzer clang's prev Dreik's +ctx diff --git a/include/libtorrent/add_torrent_params.hpp b/include/libtorrent/add_torrent_params.hpp index c24a8ec45..157547724 100644 --- a/include/libtorrent/add_torrent_params.hpp +++ b/include/libtorrent/add_torrent_params.hpp @@ -152,6 +152,8 @@ TORRENT_VERSION_NAMESPACE_2 // to the session (if DHT is enabled). The hostname may be an IP address. aux::noexcept_movable>> dht_nodes; + // in case there's no other name in this torrent, this name will be used. + // The name out of the torrent_info object takes precedence if available. std::string name; // the path where the torrent is or will be stored. @@ -236,6 +238,8 @@ TORRENT_VERSION_NAMESPACE_2 int max_uploads = -1; int max_connections = -1; + // the upload and download rate limits for this torrent, specified in + // bytes per second. -1 means unlimited. int upload_limit = -1; int download_limit = -1; @@ -329,6 +333,8 @@ TORRENT_VERSION_NAMESPACE_2 // applied before the torrent is added. aux::noexcept_movable> renamed_files; + // the posix time of the last time payload was received or sent for this + // torrent, respectively. std::time_t last_download = 0; std::time_t last_upload = 0; diff --git a/include/libtorrent/alert.hpp b/include/libtorrent/alert.hpp index f8c46e36d..98ccbcde9 100644 --- a/include/libtorrent/alert.hpp +++ b/include/libtorrent/alert.hpp @@ -86,6 +86,7 @@ namespace libtorrent { #endif public: + // hidden alert(alert const& rhs) = delete; alert& operator=(alert const&) = delete; alert(alert&& rhs) noexcept = default; diff --git a/include/libtorrent/alert_types.hpp b/include/libtorrent/alert_types.hpp index 68122f938..d3c598aba 100644 --- a/include/libtorrent/alert_types.hpp +++ b/include/libtorrent/alert_types.hpp @@ -84,6 +84,7 @@ namespace libtorrent { // this constant represents "max_alert_index" + 1 constexpr int num_alert_types = 96; + // internal enum alert_priority { alert_priority_normal = 0, @@ -2538,6 +2539,8 @@ TORRENT_VERSION_NAMESPACE_2 peer_request req; }; + // debug logging of the DHT when dht_log_notification is set in the alert + // mask. struct TORRENT_EXPORT dht_log_alert final : alert { enum dht_module_t @@ -2608,6 +2611,7 @@ TORRENT_VERSION_NAMESPACE_2 }; + // Posted when we receive a response to a DHT get_peers request. struct TORRENT_EXPORT dht_get_peers_reply_alert final : alert { dht_get_peers_reply_alert(aux::stack_allocator& alloc @@ -2736,6 +2740,9 @@ TORRENT_VERSION_NAMESPACE_2 aux::allocation_slot m_msg_idx; }; + // posted in response to a call to session::dht_live_nodes(). It contains the + // live nodes from the DHT routing table of one of the DHT nodes running + // locally. struct TORRENT_EXPORT dht_live_nodes_alert final : alert { dht_live_nodes_alert(aux::stack_allocator& alloc @@ -2747,8 +2754,10 @@ TORRENT_VERSION_NAMESPACE_2 static constexpr alert_category_t static_category = alert::dht_notification; std::string message() const override; + // the local DHT node's node-ID this routing table belongs to sha1_hash node_id; + // the number of nodes in the routing table and the actual nodes. int num_nodes() const; std::vector> nodes() const; @@ -2778,6 +2787,8 @@ TORRENT_VERSION_NAMESPACE_2 std::string message() const override; }; + // posted as a response to a call to session::dht_sample_infohashes() with + // the information from the DHT response message. struct TORRENT_EXPORT dht_sample_infohashes_alert final : alert { dht_sample_infohashes_alert(aux::stack_allocator& alloc @@ -2792,8 +2803,10 @@ TORRENT_VERSION_NAMESPACE_2 std::string message() const override; + // the node the request was sent to (and this response was received from) aux::noexcept_movable endpoint; + // the interval to wait before making another request to this node time_duration const interval; // This field indicates how many info-hash keys are currently in the node's storage. @@ -2801,6 +2814,9 @@ TORRENT_VERSION_NAMESPACE_2 // indexer may obtain additional samples after waiting out the interval. int const num_infohashes; + // returns the number of info-hashes returned by the node, as well as the + // actual info-hashes. ``num_samples()`` is more efficient than + // ``samples().size()``. int num_samples() const; std::vector samples() const; diff --git a/include/libtorrent/announce_entry.hpp b/include/libtorrent/announce_entry.hpp index c8e361816..e39a17a12 100644 --- a/include/libtorrent/announce_entry.hpp +++ b/include/libtorrent/announce_entry.hpp @@ -94,11 +94,12 @@ namespace libtorrent { // view). // if this tracker has returned scrape data, these fields are filled in - // with valid numbers. Otherwise they are set to -1. the number of - // current downloaders + // with valid numbers. Otherwise they are set to -1. ``incomplete`` counts + // the number of current downloaders. ``complete`` counts the number of + // current peers completed the download, or "seeds". ``downloaded`` is the + // cumulative number of completed downloads. int scrape_incomplete = -1; int scrape_complete = -1; - int scrape_downloaded = -1; // the number of times in a row we have failed to announce to this @@ -161,6 +162,8 @@ TORRENT_VERSION_NAMESPACE_2 // trackerid is sent). std::string trackerid; + // each local listen socket (endpoint) will announce to the tracker. This + // list contains state per endpoint. std::vector endpoints; // the tier this tracker belongs to diff --git a/include/libtorrent/bdecode.hpp b/include/libtorrent/bdecode.hpp index f3fb11b0e..680f944e9 100644 --- a/include/libtorrent/bdecode.hpp +++ b/include/libtorrent/bdecode.hpp @@ -261,6 +261,7 @@ struct TORRENT_EXPORT bdecode_node , int token_limit); #endif + // hidden TORRENT_EXPORT friend bdecode_node bdecode(span buffer , error_code& ec, int* error_pos, int depth_limit, int token_limit); diff --git a/include/libtorrent/bitfield.hpp b/include/libtorrent/bitfield.hpp index 2aad3738c..6c92306f1 100644 --- a/include/libtorrent/bitfield.hpp +++ b/include/libtorrent/bitfield.hpp @@ -79,7 +79,6 @@ namespace libtorrent { // query bit at ``index``. Returns true if bit is 1, otherwise false. bool operator[](int index) const noexcept { return get_bit(index); } - bool get_bit(int index) const noexcept { TORRENT_ASSERT(index >= 0); @@ -104,6 +103,7 @@ namespace libtorrent { // returns true if all bits in the bitfield are set bool all_set() const noexcept; + // returns true if no bit in the bitfield is set bool none_set() const noexcept { if(size() == 0) return true; @@ -125,6 +125,8 @@ namespace libtorrent { return bits; } + // returns the number of 32 bit words are needed to represent all bits in + // this bitfield. int num_words() const noexcept { return (size() + 31) / 32; @@ -133,7 +135,8 @@ namespace libtorrent { // returns true if the bitfield has zero size. bool empty() const noexcept { return size() == 0; } - // returns a pointer to the internal buffer of the bitfield. + // returns a pointer to the internal buffer of the bitfield, or + // ``nullptr`` if it's empty. char const* data() const noexcept { return m_buf ? reinterpret_cast(&m_buf[1]) : nullptr; } char* data() noexcept { return m_buf ? reinterpret_cast(&m_buf[1]) : nullptr; } @@ -142,16 +145,16 @@ namespace libtorrent { char const* bytes() const { return data(); } #endif - // assignment operator + // hidden bitfield& operator=(bitfield const& rhs) { if (&rhs == this) return *this; assign(rhs.data(), rhs.size()); return *this; } - bitfield& operator=(bitfield&& rhs) noexcept = default; + // swaps the bit-fields two variables refer to void swap(bitfield& rhs) noexcept { std::swap(m_buf, rhs.m_buf); @@ -159,9 +162,14 @@ namespace libtorrent { // count the number of bits in the bitfield that are set to 1. int count() const noexcept; + + // returns the index of the first set bit in the bitfield, i.e. 1 bit. int find_first_set() const noexcept; + + // returns the index to the last cleared bit in the bitfield, i.e. 0 bit. int find_last_clear() const noexcept; + // internal struct const_iterator { friend struct bitfield; @@ -220,6 +228,7 @@ namespace libtorrent { std::uint32_t bit = 0x80000000; }; + // internal const_iterator begin() const noexcept { return const_iterator(m_buf ? buf() : nullptr, 0); } const_iterator end() const noexcept { diff --git a/include/libtorrent/entry.hpp b/include/libtorrent/entry.hpp index cc4d1c3da..2f10d03e4 100644 --- a/include/libtorrent/entry.hpp +++ b/include/libtorrent/entry.hpp @@ -340,6 +340,7 @@ namespace aux { mutable std::uint8_t m_type_queried:1; }; + // hidden TORRENT_EXPORT bool operator==(entry const& lhs, entry const& rhs); inline bool operator!=(entry const& lhs, entry const& rhs) { return !(lhs == rhs); } diff --git a/include/libtorrent/error_code.hpp b/include/libtorrent/error_code.hpp index 8a8cb4e02..d8310df27 100644 --- a/include/libtorrent/error_code.hpp +++ b/include/libtorrent/error_code.hpp @@ -514,18 +514,24 @@ namespace libtorrent { // error happened on struct TORRENT_EXPORT storage_error { + // hidden storage_error(): file_idx(-1), operation(operation_t::unknown) {} explicit storage_error(error_code e): ec(e), file_idx(-1), operation(operation_t::unknown) {} + // explicitly converts to true if this object represents an error, and + // false if it does not. explicit operator bool() const { return ec.value() != 0; } // the error that occurred error_code ec; + // set and query the index (in the torrent) of the file this error + // occurred on. This may also have special values defined in + // torrent_status. file_index_t file() const { return file_index_t(file_idx); } void file(file_index_t f) { file_idx = static_cast(f); } - // the file the error occurred on + // internal std::int32_t file_idx:24; // A code from file_operation_t enum, indicating what diff --git a/include/libtorrent/file_storage.hpp b/include/libtorrent/file_storage.hpp index 3f9ccc3f1..e418e9436 100644 --- a/include/libtorrent/file_storage.hpp +++ b/include/libtorrent/file_storage.hpp @@ -383,6 +383,9 @@ namespace libtorrent { piece_index_t end_piece() const { return piece_index_t(m_num_pieces); } + // returns the index of the last piece in the torrent. The last piece is + // special in that it may be smaller than the other pieces (and the other + // pieces are all the same size). piece_index_t last_piece() const { return piece_index_t(m_num_pieces - 1); } @@ -481,6 +484,10 @@ namespace libtorrent { // target string associated with it. static constexpr file_flags_t flag_symlink = 3_bit; + // returns all directories used in the torrent. Files in the torrent are + // located in one of these directories. This is not a tree, it's a flat + // list of all *leaf* directories. i.e. the union of the parent paths of + // all files. std::vector const& paths() const { return m_paths; } // returns a bitmask of flags from file_flags_t that apply diff --git a/include/libtorrent/kademlia/dht_storage.hpp b/include/libtorrent/kademlia/dht_storage.hpp index 13645f9fb..7d19a8478 100644 --- a/include/libtorrent/kademlia/dht_storage.hpp +++ b/include/libtorrent/kademlia/dht_storage.hpp @@ -44,7 +44,6 @@ POSSIBILITY OF SUCH DAMAGE. #include namespace libtorrent { - class entry; } @@ -75,20 +74,17 @@ namespace libtorrent { namespace dht { // constructor function is called dht_default_storage_constructor(). // You should know that if this storage becomes full of DHT items, // the current implementation could degrade in performance. - // struct TORRENT_EXPORT dht_storage_interface { #if TORRENT_ABI_VERSION == 1 // This function returns the number of torrents tracked by // the DHT at the moment. It's used to fill session_status. // It's deprecated. - // virtual size_t num_torrents() const = 0; // This function returns the sum of all of peers per torrent // tracker byt the DHT at the moment. // It's deprecated. - // virtual size_t num_peers() const = 0; #endif @@ -109,10 +105,12 @@ namespace libtorrent { namespace dht { // // If the scrape parameter is true, you should fill these keys: // - // peers["BFpe"] - with the standard bit representation of a - // 256 bloom filter containing the downloaders - // peers["BFsd"] - with the standard bit representation of a - // 256 bloom filter containing the seeders + // peers["BFpe"] + // with the standard bit representation of a + // 256 bloom filter containing the downloaders + // peers["BFsd"] + // with the standard bit representation of a + // 256 bloom filter containing the seeders // // If the scrape parameter is false, you should fill the // key peers["values"] with a list containing a subset of @@ -122,7 +120,6 @@ namespace libtorrent { namespace dht { // // returns true if the maximum number of peers are stored // for this info_hash. - // virtual bool get_peers(sha1_hash const& info_hash , bool noseed, bool scrape, address const& requester , entry& peers) const = 0; @@ -136,7 +133,6 @@ namespace libtorrent { namespace dht { // the announce_peer DHT message. The length of this value should // have a maximum length in the final storage. The default // implementation truncate the value for a maximum of 50 characters. - // virtual void announce_peer(sha1_hash const& info_hash , tcp::endpoint const& endp , string_view name, bool seed) = 0; @@ -148,7 +144,6 @@ namespace libtorrent { namespace dht { // // returns true if the item is found and the data is returned // inside the (entry) out parameter item. - // virtual bool get_immutable_item(sha1_hash const& target , entry& item) const = 0; @@ -159,7 +154,6 @@ namespace libtorrent { namespace dht { // This data can be stored only if the target is not already // present. The implementation should consider the value of // dht_settings::max_dht_items. - // virtual void put_immutable_item(sha1_hash const& target , span buf , address const& addr) = 0; @@ -168,7 +162,6 @@ namespace libtorrent { namespace dht { // // returns true if the item is found and the data is returned // inside the out parameter seq. - // virtual bool get_mutable_item_seq(sha1_hash const& target , sequence_number& seq) const = 0; @@ -184,7 +177,6 @@ namespace libtorrent { namespace dht { // // returns true if the item is found and the data is returned // inside the (entry) out parameter item. - // virtual bool get_mutable_item(sha1_hash const& target , sequence_number seq, bool force_fill , entry& item) const = 0; @@ -196,7 +188,6 @@ namespace libtorrent { namespace dht { // The sequence number should be checked if the item is already // present. The implementation should consider the value of // dht_settings::max_dht_items. - // virtual void put_mutable_item(sha1_hash const& target , span buf , signature const& sig @@ -217,7 +208,6 @@ namespace libtorrent { namespace dht { // and modify the actual sample to put in ``item`` // // returns the number of info-hashes in the sample. - // virtual int get_infohashes_sample(entry& item) = 0; // This function is called periodically (non-constant frequency). @@ -225,17 +215,21 @@ namespace libtorrent { namespace dht { // For implementers: // Use this functions for expire peers or items or any other // storage cleanup. - // virtual void tick() = 0; + // return stats counters for the store virtual dht_storage_counters counters() const = 0; + // hidden virtual ~dht_storage_interface() {} }; using dht_storage_constructor_type = std::function(dht_settings const& settings)>; + // constructor for the default DHT storage. The DHT storage is responsible + // for maintaining peers and mutable and immutable items announced and + // stored/put to the DHT node. TORRENT_EXPORT std::unique_ptr dht_default_storage_constructor( dht_settings const& settings); diff --git a/include/libtorrent/peer_class_type_filter.hpp b/include/libtorrent/peer_class_type_filter.hpp index da548e190..3ba679a71 100644 --- a/include/libtorrent/peer_class_type_filter.hpp +++ b/include/libtorrent/peer_class_type_filter.hpp @@ -46,6 +46,7 @@ namespace libtorrent { // is based on the peer's IP address). struct TORRENT_EXPORT peer_class_type_filter { + // hidden peer_class_type_filter() { m_peer_class_type_mask.fill(0xffffffff); diff --git a/include/libtorrent/peer_info.hpp b/include/libtorrent/peer_info.hpp index ad7488bcf..f1b37c62d 100644 --- a/include/libtorrent/peer_info.hpp +++ b/include/libtorrent/peer_info.hpp @@ -232,6 +232,8 @@ TORRENT_VERSION_NAMESPACE_2 // which client the peer is using. See identify_client()_ peer_id pid; + // the number of bytes we have requested from this peer, but not yet + // received. int queue_bytes; // the number of seconds until the current front piece request will time diff --git a/include/libtorrent/session.hpp b/include/libtorrent/session.hpp index 6033d576c..df332f815 100644 --- a/include/libtorrent/session.hpp +++ b/include/libtorrent/session.hpp @@ -142,6 +142,7 @@ namespace aux { session_params(settings_pack const& sp , std::vector> exts); + // hidden session_params(session_params const&) = default; session_params(session_params&&) = default; session_params& operator=(session_params const&) = default; diff --git a/include/libtorrent/session_handle.hpp b/include/libtorrent/session_handle.hpp index 921843aad..ed1481f4f 100644 --- a/include/libtorrent/session_handle.hpp +++ b/include/libtorrent/session_handle.hpp @@ -71,13 +71,16 @@ namespace libtorrent { friend class session; friend struct aux::session_impl; - session_handle() {} - + // hidden + session_handle() = default; session_handle(session_handle const& t) = default; session_handle(session_handle&& t) noexcept = default; session_handle& operator=(session_handle const&) = default; session_handle& operator=(session_handle&&) noexcept = default; + // returns true if this handle refers to a valid session object. If the + // session has been destroyed, all session_handle objects will expire and + // not be valid. bool is_valid() const { return !m_impl.expired(); } // saves settings (i.e. the settings_pack) diff --git a/include/libtorrent/settings_pack.hpp b/include/libtorrent/settings_pack.hpp index 7df2c18e2..b10b319cf 100644 --- a/include/libtorrent/settings_pack.hpp +++ b/include/libtorrent/settings_pack.hpp @@ -74,6 +74,8 @@ namespace aux { , std::vector* callbacks = nullptr); TORRENT_EXTRA_EXPORT void run_all_updates(aux::session_impl& ses); + // converts a setting integer (from the enums string_types, int_types or + // bool_types) to a string, and vice versa. TORRENT_EXPORT int setting_by_name(string_view name); TORRENT_EXPORT char const* name_for_setting(int s); @@ -95,26 +97,38 @@ namespace aux { , aux::session_settings_single_thread& , std::vector*); + // hidden settings_pack() = default; settings_pack(settings_pack const&) = default; settings_pack(settings_pack&&) noexcept = default; settings_pack& operator=(settings_pack const&) = default; settings_pack& operator=(settings_pack&&) noexcept = default; + // set a configuration option in the settings_pack. ``name`` is one of + // the enum values from string_types, int_types or bool_types. They must + // match the respective type of the set_* function. void set_str(int name, std::string val); void set_int(int name, int val); void set_bool(int name, bool val); - bool has_val(int name) const; template void set_int(int name, flags::bitfield_flag const val) { set_int(name, static_cast(static_cast(val))); } + // queries whether the specified configuration option has a value set in + // this pack. ``name`` can be any enumeration value from string_types, + // int_types or bool_types. + bool has_val(int name) const; + // clear the settings pack from all settings void clear(); // clear a specific setting from the pack void clear(int name); + // queries the current configuration option from the settings_pack. + // ``name`` is one of the enumeration values from string_types, int_types + // or bool_types. The enum value must match the type of the get_* + // function. std::string const& get_str(int name) const; int get_int(int name) const; bool get_bool(int name) const; @@ -130,6 +144,8 @@ namespace aux { index_mask = 0x3fff }; + // enumeration values naming string settings in the pack. To be used with + // get_str() and set_str(). enum string_types { // this is the client identification to the tracker. The recommended @@ -250,6 +266,8 @@ namespace aux { max_string_setting_internal }; + // enumeration values naming boolean settings in the pack. To be used with + // get_bool() and set_bool(). enum bool_types { // determines if connections from the same IP address as existing @@ -752,6 +770,8 @@ namespace aux { max_bool_setting_internal }; + // enumeration values naming integer settings in the pack. To be used with + // get_int() and set_int(). enum int_types { // ``tracker_completion_timeout`` is the number of seconds the tracker diff --git a/include/libtorrent/torrent_handle.hpp b/include/libtorrent/torrent_handle.hpp index 649b17c44..9af651cbb 100644 --- a/include/libtorrent/torrent_handle.hpp +++ b/include/libtorrent/torrent_handle.hpp @@ -248,6 +248,7 @@ namespace aux { // i.e. is_valid() will return false. torrent_handle() noexcept = default; + // hidden torrent_handle(torrent_handle const& t) = default; torrent_handle(torrent_handle&& t) noexcept = default; torrent_handle& operator=(torrent_handle const&) = default; @@ -1239,6 +1240,8 @@ namespace aux { bool operator<(const torrent_handle& h) const { return m_torrent.owner_before(h.m_torrent); } + // returns a unique identifier for this torrent. It's not a dense index. + // It's not preserved across sessions. std::uint32_t id() const { uintptr_t ret = reinterpret_cast(m_torrent.lock().get()); diff --git a/include/libtorrent/torrent_info.hpp b/include/libtorrent/torrent_info.hpp index c83035f66..960929209 100644 --- a/include/libtorrent/torrent_info.hpp +++ b/include/libtorrent/torrent_info.hpp @@ -74,6 +74,7 @@ namespace libtorrent { using headers_t = std::vector>; + // hidden web_seed_entry(std::string const& url_, type_t type_ , std::string const& auth_ = std::string() , headers_t const& extra_headers_ = headers_t()); @@ -125,6 +126,7 @@ namespace libtorrent { int max_decode_tokens = 2000000; }; + // the torrent_info class holds the information found in a .torrent file. class TORRENT_EXPORT torrent_info { public: diff --git a/include/libtorrent/torrent_status.hpp b/include/libtorrent/torrent_status.hpp index 389acc5a1..dae1a13ae 100644 --- a/include/libtorrent/torrent_status.hpp +++ b/include/libtorrent/torrent_status.hpp @@ -141,6 +141,12 @@ TORRENT_VERSION_NAMESPACE_2 // the index of that file in the .torrent file. error_code errc; + // if the torrent is stopped because of an disk I/O error, this field + // contains the index of the file in the torrent that encountered the + // error. If the error did not originate in a file in the torrent, there + // are a few special values this can be set to: error_file_none, + // error_file_ssl_ctx, error_file_exception, error_file_partfile or + // error_file_metadata; file_index_t error_file = torrent_status::error_file_none; // special values for error_file to describe which file or component @@ -151,11 +157,11 @@ TORRENT_VERSION_NAMESPACE_2 // the error occurred setting up the SSL context static constexpr file_index_t error_file_ssl_ctx{-3}; -#if TORRENT_ABI_VERSION == 1 // the error occurred while loading the .torrent file via the user // supplied load function - static constexpr file_index_t TORRENT_DEPRECATED error_file_metadata{-4}; + static constexpr file_index_t error_file_metadata{-4}; +#if TORRENT_ABI_VERSION == 1 // the error occurred on m_url static constexpr file_index_t TORRENT_DEPRECATED error_file_url{-2}; #endif @@ -559,9 +565,19 @@ TORRENT_VERSION_NAMESPACE_2 // the info-hash for this torrent sha1_hash info_hash; + // the timestamps of the last time this torrent uploaded or downloaded + // payload to any peer. time_point last_upload; time_point last_download; + // these are cumulative counters of for how long the torrent has been in + // different states. active means not paused and added to session. Whether + // it has found any peers or not is not relevant. + // finished means all selected files/pieces were downloaded and available + // to other peers (this is always a subset of active time). + // seeding means all files/pieces were downloaded and available to + // peers. Being available to peers does not imply there are other peers + // asking for the payload. seconds active_duration; seconds finished_duration; seconds seeding_duration; diff --git a/src/alert.cpp b/src/alert.cpp index ea1190364..e167297a2 100644 --- a/src/alert.cpp +++ b/src/alert.cpp @@ -2492,7 +2492,7 @@ namespace { aux::vector samples; samples.resize(m_num_samples); - const char *ptr = m_alloc.get().ptr(m_samples_idx); + char const* ptr = m_alloc.get().ptr(m_samples_idx); std::memcpy(samples.data(), ptr, samples.size() * 20); return std::move(samples); diff --git a/src/kademlia/dht_tracker.cpp b/src/kademlia/dht_tracker.cpp index e445cf77d..e39105c9b 100644 --- a/src/kademlia/dht_tracker.cpp +++ b/src/kademlia/dht_tracker.cpp @@ -601,7 +601,7 @@ namespace libtorrent { namespace dht { return ret; } - namespace { +namespace { std::vector save_nodes(node const& dht) { @@ -613,7 +613,7 @@ namespace libtorrent { namespace dht { return ret; } - } // anonymous namespace +} // anonymous namespace dht_state dht_tracker::state() const { diff --git a/src/session_impl.cpp b/src/session_impl.cpp index 2c8c1fba5..db111a200 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -6058,13 +6058,12 @@ namespace aux { void session_impl::dht_sample_infohashes(udp::endpoint const& ep, sha1_hash const& target) { if (!m_dht) return; - m_dht->sample_infohashes(ep, target, [this, &ep](time_duration interval - , int num, std::vector samples + m_dht->sample_infohashes(ep, target, [this, ep](time_duration const interval + , int const num, std::vector samples , std::vector> nodes) { - if (m_alerts.should_post()) - m_alerts.emplace_alert(ep - , interval, num, samples, nodes); + m_alerts.emplace_alert(ep + , interval, num, std::move(samples), std::move(nodes)); }); } diff --git a/src/torrent_status.cpp b/src/torrent_status.cpp index 6e465736a..94c4af7a8 100644 --- a/src/torrent_status.cpp +++ b/src/torrent_status.cpp @@ -38,10 +38,10 @@ namespace libtorrent { file_index_t constexpr torrent_status::error_file_ssl_ctx; file_index_t constexpr torrent_status::error_file_exception; file_index_t constexpr torrent_status::error_file_partfile; + file_index_t constexpr torrent_status::error_file_metadata; #if TORRENT_ABI_VERSION == 1 file_index_t constexpr torrent_status::error_file_url; - file_index_t constexpr torrent_status::error_file_metadata; #endif torrent_status::torrent_status() noexcept {}