From 2c7e16743641c2cf38455ce6a414a71655b2e64c Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sat, 26 Feb 2022 11:53:34 -0600 Subject: [PATCH] chore: exploratory change for #2571 (#2717) This _may_ solve the problem by calling tier.useNextTracker(); but if not, it also adds new assertions to try and fail sooner if the announcer gets into a bad state. --- libtransmission/announcer.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libtransmission/announcer.cc b/libtransmission/announcer.cc index 8c14857ca..92b4c32ce 100644 --- a/libtransmission/announcer.cc +++ b/libtransmission/announcer.cc @@ -868,10 +868,13 @@ static tr_announce_request* announce_request_new( tr_tier const* tier, tr_announce_event event) { + auto const* const current_tracker = tier->currentTracker(); + TR_ASSERT(current_tracker != nullptr); + auto* const req = new tr_announce_request(); req->port = tr_sessionGetPublicPeerPort(announcer->session); - req->announce_url = tier->currentTracker()->announce_url; - req->tracker_id = tier->currentTracker()->tracker_id; + req->announce_url = current_tracker->announce_url; + req->tracker_id = current_tracker->tracker_id; req->info_hash = tor->infoHash(); req->peer_id = tr_torrentGetPeerId(tor); req->up = tier->byteCounts[TR_ANN_UP]; @@ -1047,7 +1050,7 @@ static void on_announce_done(tr_announce_response const* response, void* vdata) publishErrorClear(tier); - tr_tracker* const tracker = tier->currentTracker(); + auto* const tracker = tier->currentTracker(); if (tracker != nullptr) { tracker->consecutive_failures = 0; @@ -1195,6 +1198,7 @@ static void tierAnnounce(tr_announcer* announcer, tr_tier* tier) { TR_ASSERT(!tier->isAnnouncing); TR_ASSERT(!std::empty(tier->announce_events)); + TR_ASSERT(tier->currentTracker() != nullptr); time_t const now = tr_time(); @@ -1781,6 +1785,7 @@ void tr_announcerResetTorrent(tr_announcer* /*announcer*/, tr_torrent* tor) { if (!tier.current_tracker_index_) { + tier.useNextTracker(); tier_announce_event_push(&tier, TR_ANNOUNCE_EVENT_STARTED, now); } }