premiere-libtorrent/src
Steven Siloti cc8cbcaf9d fix infinite loop when announcing
In torrent::announce_with_tracker there is a check after announcing all of
a tracker's endpoints to see if all required announces have already been sent
according to the tier settings.

	if (std::all_of(listen_socket_states.begin(), listen_socket_states.end()
		, [](announce_state const& s) { return s.done; }))
		break;

Commit ab07eceead added a check which can cause listen_socket_states to not be
populated if all endpoints for the first tracker are disabled. This causes the
early break out code above to trigger and prevent any announces from being sent.

The extra check is not in torrent::update_tracker_timer though, so if it thinks there
is at least one endpoint ready to announce it will immediately trigger another
on_tracker_announce, again, and again.

Simple fix is to move the offending check below the code which populates
listen_socket_states so the the latter will execute unconditionally.
2020-01-26 11:39:33 +01:00
..
kademlia limit the number of DHT nodes to run 2020-01-21 12:04:22 +01:00
ConvertUTF.cpp fix some warnings from sonar-cube 2018-09-05 18:10:57 -07:00
Makefile.am remove outgoing udp sockets and replace with listen_socket_t 2020-01-19 08:27:33 +01:00
add_torrent_params.cpp add some noexcept and assume std::function is not nothrow move constructible on clang 2018-08-21 11:12:34 +02:00
alert.cpp bind SOCKS5 connection to correct outgoing interface 2020-01-19 08:27:33 +01:00
alert_manager.cpp deliver notification of alerts being dropped via alerts_dropped_alert 2018-05-30 11:26:02 +02:00
announce_entry.cpp suppress future attempts to announce to a tracker from an interface with an incompatible address family 2020-01-04 23:03:17 +01:00
assert.cpp fix production asserts 2018-05-22 12:12:33 +02:00
bandwidth_limit.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
bandwidth_manager.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
bandwidth_queue_entry.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
bdecode.cpp remove empty statements and fix integral promotion warning 2019-08-20 14:36:03 +02:00
bitfield.cpp make span's and sha1_hash's index and size types signed (instead of unsigned). Specifically std::ptrdiff_t. In line with the direction of gsl span and reduce signed->unsigned casts 2018-11-16 14:06:22 +01:00
block_cache.cpp fix issue where pieces would be hashed despite disable_hash_checks was set 2019-09-13 22:38:18 +02:00
bloom_filter.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
broadcast_socket.cpp deprecate and remvoe broadcast_lsd setting 2020-01-16 16:02:00 +01:00
bt_peer_connection.cpp improved peer_conn fuzzer 2019-08-17 22:16:38 +02:00
chained_buffer.cpp don't copy a vector into the async_write operation for iovec. Since the chained_buffer will own the vector anyway, just make it return a span and copy that 2019-02-09 17:45:47 +01:00
choker.cpp use a better algorithm for sorting peers in the unchoker 2019-11-21 08:39:32 +01:00
close_reason.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
cpuid.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
crc32c.cpp Windows: Fix build Visual C++ ARM/ARM64 2018-04-25 16:07:47 -04:00
create_torrent.cpp make aux::session_settings thread-safe. this allows all threads to share the same settings object, which has low contention and is rarely updated 2019-09-01 03:41:36 +02:00
disk_buffer_holder.cpp qualify some assignment operators to disallow assignment to temporaries 2018-07-01 17:29:50 +02:00
disk_buffer_pool.cpp merged RC_1_1 into master 2018-11-24 01:23:10 +01:00
disk_io_job.cpp more use of const modifier 2018-08-15 07:41:41 +02:00
disk_io_thread.cpp fix issue where pieces would be hashed despite disable_hash_checks was set 2019-09-13 22:38:18 +02:00
disk_io_thread_pool.cpp fix build with boost-1.70 (#3788) 2019-04-19 20:56:19 +02:00
disk_job_fence.cpp add asserts in disk_fence_job 2018-12-07 13:37:27 +01:00
disk_job_pool.cpp minor code refactor, more use of auto 2018-06-08 21:56:06 +02:00
entry.cpp fix entry assignment from bdecode_node and lazy_entry 2019-07-21 06:22:11 -07:00
enum_net.cpp support source-hint from routing table, where supported 2020-01-22 15:50:33 +01:00
error_code.cpp fix error code messages when building without deprecated functions 2019-07-21 05:39:53 -07:00
escape_string.cpp convert some for-loops into std algorithms 2018-11-27 19:43:01 +01:00
ffs.cpp deduplicate code implementing log2p1() 2019-03-23 22:44:32 +01:00
file.cpp fix comment 2020-01-14 14:20:19 +01:00
file_pool.cpp replace the TORRENT_CFG ABI check with inline namespaces around the symbol that can change ABI based on build configuration options 2018-05-13 19:25:17 +02:00
file_progress.cpp [WIP] refactor in file_progress to avoid dependency of alert_manager 2019-01-13 02:40:15 +01:00
file_storage.cpp improve hack in file_storage::symlink 2019-08-13 21:30:23 +02:00
fingerprint.cpp update list of clients to be more.. modern. Hide alert constructors 2019-12-02 23:24:59 +01:00
generate_peer_id.cpp make span's and sha1_hash's index and size types signed (instead of unsigned). Specifically std::ptrdiff_t. In line with the direction of gsl span and reduce signed->unsigned casts 2018-11-16 14:06:22 +01:00
gzip.cpp marked final error category classes, avoid -Wnon-virtual-dtor 2019-01-20 00:38:25 +01:00
hasher.cpp fix warning in gcrypt usage 2019-02-12 21:01:21 +01:00
hasher512.cpp fix warning in gcrypt usage 2019-02-12 21:01:21 +01:00
hex.cpp make span's and sha1_hash's index and size types signed (instead of unsigned). Specifically std::ptrdiff_t. In line with the direction of gsl span and reduce signed->unsigned casts 2018-11-16 14:06:22 +01:00
http_connection.cpp limit tracker announces and SOCKS5 connection attempts to listen_socket_t that actually can reach the target 2020-01-19 08:27:33 +01:00
http_parser.cpp silence GCC warning on memmove 2019-12-17 09:28:23 +01:00
http_seed_connection.cpp remove unused flags parameter to send_buffer() and send_message() on peer_connections 2019-03-19 01:09:34 +01:00
http_stream.cpp fix http_stream::handshake2 2019-12-20 22:10:17 +01:00
http_tracker_connection.cpp limit tracker announces and SOCKS5 connection attempts to listen_socket_t that actually can reach the target 2020-01-19 08:27:33 +01:00
i2p_stream.cpp marked final error category classes, avoid -Wnon-virtual-dtor 2019-01-20 00:38:25 +01:00
identify_client.cpp Added FrostWire's client ID 2019-02-12 13:27:43 +01:00
instantiate_connection.cpp moved instantiate_connection to aux namespace 2018-05-29 09:25:25 +02:00
ip_filter.cpp remove the IPv6 enable/disable build config 2018-08-19 22:20:54 +02:00
ip_notifier.cpp fix windows build with boost 1.70 2019-04-21 00:47:44 +02:00
ip_voter.cpp remove the IPv6 enable/disable build config 2018-08-19 22:20:54 +02:00
lazy_bdecode.cpp remove duplicate copy of escape_string 2019-03-23 20:30:40 +01:00
listen_socket_handle.cpp limit tracker announces and SOCKS5 connection attempts to listen_socket_t that actually can reach the target 2020-01-19 08:27:33 +01:00
lsd.cpp simplify the local service discovery logic to only deal with a single network. Instantiate LSD once per listen_socket_t instead of just once 2020-01-20 22:14:21 +01:00
magnet_uri.cpp support numeric suffixes to magnet link parameter names 2019-02-15 23:15:38 +01:00
merkle.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
natpmp.cpp simplify natpmp by requiring it to be tied to a specific network, and use get_gateway() and remove unused get_default_route() functions 2020-01-20 01:24:22 +01:00
packet_buffer.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
parse_url.cpp minor code refactor, more use of auto 2018-06-08 21:56:06 +02:00
part_file.cpp replace use of deprecated shared_ptr<>::unique with shared_ptr<>::use_count 2019-12-12 19:40:39 +01:00
path.cpp improve file_storage::sanitize_symlinks 2019-07-29 06:10:04 -07:00
pe_crypto.cpp fix bug in protocol encryption/obfuscation 2019-12-07 11:44:05 +01:00
peer_class.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
peer_class_set.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
peer_connection.cpp fix some PVS studio warnings 2019-11-07 16:38:08 +00:00
peer_connection_handle.cpp remove unused flags parameter to send_buffer() and send_message() on peer_connections 2019-03-19 01:09:34 +01:00
peer_info.cpp minor code refactor, cleanup and typo in peer related code 2018-06-23 23:11:48 +02:00
peer_list.cpp minor cleanup of debug logging for peer_list 2020-01-11 11:22:30 +01:00
performance_counters.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
piece_picker.cpp fix handling of torrents with too large pieces 2019-11-25 02:46:55 +01:00
platform_util.cpp wrap inclusion of windows.h with appropriate defines 2018-11-21 10:09:23 +01:00
proxy_base.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
proxy_settings.cpp make settings_pack enums specify a narrower underlying type and remove deprecated, internal enums 2018-11-24 16:47:41 +01:00
puff.cpp Remove duplicate word in comments like "the the" 2019-02-24 12:28:17 +01:00
random.cpp fix seeding of random number generator on mingw 2019-07-04 19:56:18 +02:00
read_resume_data.cpp store stop_when_ready flag in fastresume data 2020-01-23 17:13:57 +01:00
receive_buffer.cpp remove typed_span type 2018-11-17 00:43:58 +01:00
request_blocks.cpp extend the whole_pieces_threshold setting to also request contiguous pieces from fast peers 2019-07-02 10:32:27 +02:00
resolve_links.cpp fix some warnings around unused variables, dead stores, potentially dereferencing nullptr and calling virtual functions from constructor 2018-07-20 01:03:16 +02:00
resolver.cpp don't leak exceptions out of handler callbacks in resolver 2019-05-19 08:00:50 +02:00
session.cpp deprecate (and remove) upnp_ignore_nonrouters setting 2020-01-16 10:35:50 +01:00
session_call.cpp fix warnings 2019-04-10 08:05:36 +02:00
session_handle.cpp make all tests run cleanly with leak sanitizer 2019-03-27 17:10:36 +01:00
session_impl.cpp limit the number of DHT nodes to run 2020-01-21 12:04:22 +01:00
session_settings.cpp make aux::session_settings thread-safe. this allows all threads to share the same settings object, which has low contention and is rarely updated 2019-09-01 03:41:36 +02:00
session_stats.cpp add stats counter for the number of outstanding async_accept calls 2018-11-30 02:15:45 +01:00
settings_pack.cpp deprecate and remvoe broadcast_lsd setting 2020-01-16 16:02:00 +01:00
sha1.cpp remove empty statements and fix integral promotion warning 2019-08-20 14:36:03 +02:00
sha1_hash.cpp remove typed_span type 2018-11-17 00:43:58 +01:00
sha512.cpp include sha1.cpp in the build unconditionally, match build configuration options to using built-in sha1 and defining it 2019-02-13 00:14:53 +01:00
smart_ban.cpp improve peer debug logging 2018-12-02 04:03:03 +01:00
socket_io.cpp remove the IPv6 enable/disable build config 2018-08-19 22:20:54 +02:00
socket_type.cpp fix use-after-free issue in socket_type 2019-07-21 05:40:18 -07:00
socks5_stream.cpp marked final error category classes, avoid -Wnon-virtual-dtor 2019-01-20 00:38:25 +01:00
stack_allocator.cpp fix some PVS studio warnings 2019-11-07 16:38:08 +00:00
stat.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
stat_cache.cpp update symlinks to conform to BEP 47 2019-03-19 10:05:06 +01:00
storage.cpp update symlinks to conform to BEP 47 2019-03-19 10:05:06 +01:00
storage_piece_set.cpp use an intrusive linked list for peer_cache_entry instead an unordered set, to avoid heap allocations and make cache operations not able to fail. This simplifies error handling 2017-12-28 00:52:09 +01:00
storage_utils.cpp update appveyor image and boost version. explicitly use python2 for test scripts (as the SSL behavior has changed in python 3 in non-trivial ways) 2019-11-19 01:46:39 +01:00
string_util.cpp promote errors in parsing listen_interfaces to post listen_failed_alert 2019-12-09 06:54:31 +01:00
time.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
timestamp_history.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
torrent.cpp fix infinite loop when announcing 2020-01-26 11:39:33 +01:00
torrent_handle.cpp fix issue of rapid calls to file_priority() clobbering each other 2019-12-04 22:04:13 +01:00
torrent_info.cpp fixed restoring of trackers, comment, creation date and created-by in resume data 2019-11-25 14:21:55 +01:00
torrent_peer.cpp fix warnings 2019-04-10 08:05:36 +02:00
torrent_peer_allocator.cpp remove the IPv6 enable/disable build config 2018-08-19 22:20:54 +02:00
torrent_status.cpp add some missing documentation. undeprecate error_file_metadata ahead of master undeprecating it 2019-09-08 10:51:46 +02:00
tracker_manager.cpp removed repeated code and minor code refactor 2018-12-05 09:13:54 +01:00
udp_socket.cpp improve SOCKS5 error alerts by including the interface address in no-route-to-host errors 2020-01-20 01:24:55 +01:00
udp_tracker_connection.cpp limit tracker announces and SOCKS5 connection attempts to listen_socket_t that actually can reach the target 2020-01-19 08:27:33 +01:00
upnp.cpp move upnp mapper to have one per listen_socket_t. simplify the upnp logic to only deal with a single network. 2020-01-20 14:27:16 +01:00
ut_metadata.cpp make random_shuffle() take a range instead of two iterators. use random_bytes() instead of std::generate() and random_byte(). Remove unused hasher.hpp includes 2019-02-19 01:48:08 +01:00
ut_pex.cpp back-port ut_pex fixes 2019-12-03 18:49:34 +01:00
utf8.cpp marked final error category classes, avoid -Wnon-virtual-dtor 2019-01-20 00:38:25 +01:00
utp_socket_manager.cpp merge RC_1_1 into master 2019-01-03 11:23:20 +01:00
utp_stream.cpp remove outgoing udp sockets and replace with listen_socket_t 2020-01-19 08:27:33 +01:00
version.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
web_connection_base.cpp merged RC_1_1 into master 2018-04-13 01:47:41 +02:00
web_peer_connection.cpp WIP: fix to be less likely to hammer web seeds 2019-09-12 16:57:07 +02:00
write_resume_data.cpp store stop_when_ready flag in fastresume data 2020-01-23 17:13:57 +01:00
xml_parse.cpp merged RC_1_1 into master 2018-07-18 10:48:36 +02:00