diff options
-rw-r--r-- | trackerlogic.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/trackerlogic.c b/trackerlogic.c index 6b8dba5..dfff041 100644 --- a/trackerlogic.c +++ b/trackerlogic.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <math.h> | 14 | #include <math.h> |
15 | #include <glob.h> | 15 | #include <glob.h> |
16 | 16 | ||
17 | #include <assert.h> | ||
17 | #include <errno.h> | 18 | #include <errno.h> |
18 | #include "scan.h" | 19 | #include "scan.h" |
19 | #include "byte.h" | 20 | #include "byte.h" |
@@ -205,11 +206,17 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer ) { | |||
205 | memmove( peer_dest, peer, sizeof( ot_peer ) ); | 206 | memmove( peer_dest, peer, sizeof( ot_peer ) ); |
206 | if( OT_FLAG(peer) & PEER_FLAG_SEEDING ) | 207 | if( OT_FLAG(peer) & PEER_FLAG_SEEDING ) |
207 | torrent->peer_list->seed_count[0]++; | 208 | torrent->peer_list->seed_count[0]++; |
209 | |||
210 | assert( torrent->peer_list->seed_count[0] <= torrent->peer_list->peers[0].size ); | ||
211 | |||
208 | for( i=1; i<OT_POOLS_COUNT; ++i ) { | 212 | for( i=1; i<OT_POOLS_COUNT; ++i ) { |
209 | switch( vector_remove_peer( &torrent->peer_list->peers[i], peer ) ) { | 213 | switch( vector_remove_peer( &torrent->peer_list->peers[i], peer ) ) { |
210 | case 0: continue; | 214 | case 0: continue; |
211 | case 2: torrent->peer_list->seed_count[i]--; | 215 | case 2: torrent->peer_list->seed_count[i]--; |
212 | case 1: default: return torrent; | 216 | case 1: default: |
217 | assert( torrent->peer_list->seed_count[i] > 0 ); | ||
218 | assert( torrent->peer_list->seed_count[i] <= torrent->peer_list->peers[i].size ); | ||
219 | return torrent; | ||
213 | } | 220 | } |
214 | } | 221 | } |
215 | } else { | 222 | } else { |
@@ -217,6 +224,9 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer ) { | |||
217 | torrent->peer_list->seed_count[0]--; | 224 | torrent->peer_list->seed_count[0]--; |
218 | if( !(OT_FLAG(peer_dest) & PEER_FLAG_SEEDING ) && (OT_FLAG(peer) & PEER_FLAG_SEEDING ) ) | 225 | if( !(OT_FLAG(peer_dest) & PEER_FLAG_SEEDING ) && (OT_FLAG(peer) & PEER_FLAG_SEEDING ) ) |
219 | torrent->peer_list->seed_count[0]++; | 226 | torrent->peer_list->seed_count[0]++; |
227 | |||
228 | assert( torrent->peer_list->seed_count[0] > 0 ); | ||
229 | assert( torrent->peer_list->seed_count[0] <= torrent->peer_list->peers[0].size ); | ||
220 | } | 230 | } |
221 | 231 | ||
222 | return torrent; | 232 | return torrent; |
@@ -452,7 +462,10 @@ void remove_peer_from_torrent( ot_hash *hash, ot_peer *peer ) { | |||
452 | switch( vector_remove_peer( &torrent->peer_list->peers[i], peer ) ) { | 462 | switch( vector_remove_peer( &torrent->peer_list->peers[i], peer ) ) { |
453 | case 0: continue; | 463 | case 0: continue; |
454 | case 2: torrent->peer_list->seed_count[i]--; | 464 | case 2: torrent->peer_list->seed_count[i]--; |
455 | case 1: default: return; | 465 | case 1: default: |
466 | assert( torrent->peer_list->seed_count[i] > 0 ); | ||
467 | assert( torrent->peer_list->seed_count[i] <= torrent->peer_list->peers[i].size ); | ||
468 | return; | ||
456 | } | 469 | } |
457 | } | 470 | } |
458 | 471 | ||