parseAnnounceResponse( tr_tier * tier,
const char * response,
size_t responseLen,
+ tr_bool isStopped,
tr_bool * gotScrape )
{
tr_benc benc;
tr_benc * tmp;
const char * str;
const uint8_t * raw;
- tr_bool gotPeers = FALSE;
success = TRUE;
/* "compact" extension */
const int allAreSeeds = incomplete == 0;
peerCount += publishNewPeersCompact( tier, allAreSeeds, raw, rawlen );
- gotPeers = TRUE;
}
else if( tr_bencDictFindList( &benc, "peers", &tmp ) )
{
size_t byteCount = 0;
uint8_t * array = parseOldPeers( tmp, &byteCount );
peerCount += publishNewPeers( tier, allAreSeeds, array, byteCount );
- gotPeers = TRUE;
tr_free( array );
}
/* "compact" extension */
const tr_bool allAreSeeds = incomplete == 0;
peerCount += publishNewPeersCompact6( tier, allAreSeeds, raw, rawlen );
- gotPeers = TRUE;
}
if( tier->lastAnnounceStr[0] == '\0' )
tr_strlcpy( tier->lastAnnounceStr, _( "Success" ),
sizeof( tier->lastAnnounceStr ) );
- if( gotPeers )
+ if( !isStopped )
tier->lastAnnouncePeerCount = peerCount;
}
int torrentId;
int tierId;
time_t timeSent;
+ const char * event;
/** If the request succeeds, the value for tier's "isRunning" flag */
tr_bool isRunningOnSuccess;
tr_bool gotScrape = FALSE;
tr_bool success = FALSE;
const time_t now = time ( NULL );
+ const tr_bool isStopped = !strcmp( data->event, "stopped" );
if( announcer && tier )
{
if( responseCode == HTTP_OK )
{
- success = parseAnnounceResponse( tier, response, responseLen, &gotScrape );
+ success = parseAnnounceResponse( tier, response, responseLen, isStopped, &gotScrape );
dbgmsg( tier, "success is %d", success );
}
else if( responseCode )
data->tierId = tier->key;
data->isRunningOnSuccess = tor->isRunning;
data->timeSent = now;
-
- url = createAnnounceURL( announcer, tor, tier, getAnnounceEvent( tier ) );
+ data->event = getAnnounceEvent( tier );
+ url = createAnnounceURL( announcer, tor, tier, data->event );
tier->isAnnouncing = TRUE;
tier->lastAnnounceStartTime = now;