diff options
| author | erdgeist <> | 2007-02-16 21:13:44 +0000 |
|---|---|---|
| committer | erdgeist <> | 2007-02-16 21:13:44 +0000 |
| commit | 2313de59e54091a4032a15ff9d64f197d05d7557 (patch) | |
| tree | 328ba1aff1d113770cad4655cb57d13e7edad5fb | |
| parent | 70a65f284257a4564cf80acb5b1e7a3b81efe149 (diff) | |
Count completed messages only once per peer
| -rw-r--r-- | trackerlogic.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/trackerlogic.c b/trackerlogic.c index d112abd..2c0dd4f 100644 --- a/trackerlogic.c +++ b/trackerlogic.c | |||
| @@ -224,14 +224,15 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer ) { | |||
| 224 | peer_pool = &torrent->peer_list->peers[0]; | 224 | peer_pool = &torrent->peer_list->peers[0]; |
| 225 | peer_dest = vector_find_or_insert( peer_pool, (void*)peer, sizeof( ot_peer ), OT_PEER_COMPARE_SIZE, &exactmatch ); | 225 | peer_dest = vector_find_or_insert( peer_pool, (void*)peer, sizeof( ot_peer ), OT_PEER_COMPARE_SIZE, &exactmatch ); |
| 226 | 226 | ||
| 227 | if( OT_FLAG( peer ) & PEER_FLAG_COMPLETED ) | ||
| 228 | torrent->peer_list->downloaded++; | ||
| 229 | |||
| 230 | /* If we hadn't had a match in current pool, create peer there and | 227 | /* If we hadn't had a match in current pool, create peer there and |
| 231 | remove it from all older pools */ | 228 | remove it from all older pools */ |
| 232 | if( !exactmatch ) { | 229 | if( !exactmatch ) { |
| 233 | int i; | 230 | int i; |
| 234 | memmove( peer_dest, peer, sizeof( ot_peer ) ); | 231 | memmove( peer_dest, peer, sizeof( ot_peer ) ); |
| 232 | |||
| 233 | if( OT_FLAG( peer ) & PEER_FLAG_COMPLETED ) | ||
| 234 | torrent->peer_list->downloaded++; | ||
| 235 | |||
| 235 | if( OT_FLAG(peer) & PEER_FLAG_SEEDING ) | 236 | if( OT_FLAG(peer) & PEER_FLAG_SEEDING ) |
| 236 | torrent->peer_list->seed_count[0]++; | 237 | torrent->peer_list->seed_count[0]++; |
| 237 | 238 | ||
| @@ -247,6 +248,11 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer ) { | |||
| 247 | torrent->peer_list->seed_count[0]--; | 248 | torrent->peer_list->seed_count[0]--; |
| 248 | if( !(OT_FLAG(peer_dest) & PEER_FLAG_SEEDING ) && (OT_FLAG(peer) & PEER_FLAG_SEEDING ) ) | 249 | if( !(OT_FLAG(peer_dest) & PEER_FLAG_SEEDING ) && (OT_FLAG(peer) & PEER_FLAG_SEEDING ) ) |
| 249 | torrent->peer_list->seed_count[0]++; | 250 | torrent->peer_list->seed_count[0]++; |
| 251 | if( !(OT_FLAG( peer_dest ) & PEER_FLAG_COMPLETED ) && (OT_FLAG( peer ) & PEER_FLAG_COMPLETED ) ) | ||
| 252 | torrent->peer_list->downloaded++; | ||
| 253 | if( OT_FLAG( peer_dest ) & PEER_FLAG_COMPLETED ) | ||
| 254 | OT_FLAG( peer ) |= PEER_FLAG_COMPLETED; | ||
| 255 | |||
| 250 | memmove( peer_dest, peer, sizeof( ot_peer ) ); | 256 | memmove( peer_dest, peer, sizeof( ot_peer ) ); |
| 251 | } | 257 | } |
| 252 | 258 | ||
