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.
This commit is contained in:
Charles Kerr 2022-02-26 11:53:34 -06:00 committed by GitHub
parent 1598774b8d
commit 2c7e167436
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 3 deletions

View File

@ -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);
}
}