diff options
| -rw-r--r-- | trackerlogic.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/trackerlogic.c b/trackerlogic.c index 37b3c4d..ee7b7fc 100644 --- a/trackerlogic.c +++ b/trackerlogic.c | |||
| @@ -312,7 +312,7 @@ size_t return_fullscrape_for_tracker( char **reply ) { | |||
| 312 | torrent_count += all_torrents[i].size; | 312 | torrent_count += all_torrents[i].size; |
| 313 | 313 | ||
| 314 | // one extra for pro- and epilogue | 314 | // one extra for pro- and epilogue |
| 315 | if( !( r = *reply = malloc( 128*(1+torrent_count) ) ) ) return 0; | 315 | if( !( r = *reply = malloc( 100*(1+torrent_count) ) ) ) return 0; |
| 316 | 316 | ||
| 317 | memmove( r, "d5:filesd", 9 ); r += 9; | 317 | memmove( r, "d5:filesd", 9 ); r += 9; |
| 318 | for( i=0; i<256; ++i ) { | 318 | for( i=0; i<256; ++i ) { |
| @@ -325,7 +325,7 @@ size_t return_fullscrape_for_tracker( char **reply ) { | |||
| 325 | peers += peer_list->peers[k].size; | 325 | peers += peer_list->peers[k].size; |
| 326 | seeds += peer_list->seed_count[k]; | 326 | seeds += peer_list->seed_count[k]; |
| 327 | } | 327 | } |
| 328 | if( peers ) { | 328 | if( peers || peer_list->downloaded ) { |
| 329 | *r++='2'; *r++='0'; *r++=':'; | 329 | *r++='2'; *r++='0'; *r++=':'; |
| 330 | memmove( r, hash, 20 ); r+=20; | 330 | memmove( r, hash, 20 ); r+=20; |
| 331 | r += sprintf( r, "d8:completei%zde10:downloadedi%zde10:incompletei%zdee", seeds, peer_list->downloaded, peers-seeds ); | 331 | r += sprintf( r, "d8:completei%zde10:downloadedi%zde10:incompletei%zdee", seeds, peer_list->downloaded, peers-seeds ); |
| @@ -548,7 +548,7 @@ void clean_all_torrents( void ) { | |||
| 548 | /* Torrent has idled out */ | 548 | /* Torrent has idled out */ |
| 549 | if( timedout > OT_TORRENT_TIMEOUT ) { | 549 | if( timedout > OT_TORRENT_TIMEOUT ) { |
| 550 | vector_remove_torrent( torrents_list, hash ); | 550 | vector_remove_torrent( torrents_list, hash ); |
| 551 | --j; | 551 | --j; continue; |
| 552 | } | 552 | } |
| 553 | 553 | ||
| 554 | /* If nothing to be cleaned here, handle next torrent */ | 554 | /* If nothing to be cleaned here, handle next torrent */ |
| @@ -558,8 +558,13 @@ void clean_all_torrents( void ) { | |||
| 558 | for( k = 0; k < OT_POOLS_COUNT; ++k ) | 558 | for( k = 0; k < OT_POOLS_COUNT; ++k ) |
| 559 | peers_count += peer_list->peers[k].size; | 559 | peers_count += peer_list->peers[k].size; |
| 560 | 560 | ||
| 561 | if( !peers_count ) | 561 | if( !peers_count ) { |
| 562 | if( !peer_list->downloaded ) { | ||
| 563 | vector_remove_torrent( torrents_list, hash ); | ||
| 564 | --j; | ||
| 565 | } | ||
| 562 | continue; | 566 | continue; |
| 567 | } | ||
| 563 | 568 | ||
| 564 | timedout = OT_POOLS_COUNT; | 569 | timedout = OT_POOLS_COUNT; |
| 565 | } | 570 | } |
