Announce INT64_MAX as size left if the value is unknown
This helps with trakers like Amazon S3 where signed type is used but negative values aren't accepted. Fixes: #250
This commit is contained in:
parent
ac4fa04277
commit
6a74bd438c
|
@ -74,6 +74,7 @@ static char* announce_url_new(tr_session const* session, tr_announce_request con
|
|||
"&port=%d"
|
||||
"&uploaded=%" PRIu64
|
||||
"&downloaded=%" PRIu64
|
||||
"&left=%" PRIu64
|
||||
"&numwant=%d"
|
||||
"&key=%x"
|
||||
"&compact=1"
|
||||
|
@ -85,19 +86,10 @@ static char* announce_url_new(tr_session const* session, tr_announce_request con
|
|||
req->port,
|
||||
req->up,
|
||||
req->down,
|
||||
req->leftUntilComplete,
|
||||
req->numwant,
|
||||
req->key);
|
||||
|
||||
if (req->leftUntilComplete != ~(uint64_t)0)
|
||||
{
|
||||
evbuffer_add_printf(buf, "&left=%" PRIu64, req->leftUntilComplete);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Support trackers which don't react to huge numbers well (e.g. Amazon S3)
|
||||
evbuffer_add_printf(buf, "&left=-1");
|
||||
}
|
||||
|
||||
if (session->encryptionMode == TR_ENCRYPTION_REQUIRED)
|
||||
{
|
||||
evbuffer_add_printf(buf, "&requirecrypto=1");
|
||||
|
|
|
@ -945,7 +945,7 @@ static tr_announce_request* announce_request_new(tr_announcer const* announcer,
|
|||
req->up = tier->byteCounts[TR_ANN_UP];
|
||||
req->down = tier->byteCounts[TR_ANN_DOWN];
|
||||
req->corrupt = tier->byteCounts[TR_ANN_CORRUPT];
|
||||
req->leftUntilComplete = tr_torrentHasMetadata(tor) ? tor->info.totalSize - tr_torrentHaveTotal(tor) : ~(uint64_t)0;
|
||||
req->leftUntilComplete = tr_torrentHasMetadata(tor) ? tor->info.totalSize - tr_torrentHaveTotal(tor) : INT64_MAX;
|
||||
req->event = event;
|
||||
req->numwant = event == TR_ANNOUNCE_EVENT_STOPPED ? 0 : NUMWANT;
|
||||
req->key = announcer->key;
|
||||
|
|
Loading…
Reference in New Issue