summaryrefslogtreecommitdiff
path: root/trackerlogic.c
diff options
context:
space:
mode:
Diffstat (limited to 'trackerlogic.c')
-rw-r--r--trackerlogic.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/trackerlogic.c b/trackerlogic.c
index 249a2a0..8ebaa46 100644
--- a/trackerlogic.c
+++ b/trackerlogic.c
@@ -337,6 +337,23 @@ size_t remove_peer_from_torrent( ot_hash hash, ot_peer *peer, char *reply, PROTO
337 return reply_size; 337 return reply_size;
338} 338}
339 339
340void iterate_all_torrents( int (*for_each)( ot_torrent* torrent, uintptr_t data ), uintptr_t data ) {
341 int bucket;
342 size_t j;
343
344 for( bucket=0; bucket<OT_BUCKET_COUNT; ++bucket ) {
345 ot_vector *torrents_list = mutex_bucket_lock( bucket );
346 ot_torrent *torrents = (ot_torrent*)(torrents_list->data);
347
348 for( j=0; j<torrents_list->size; ++j )
349 if( for_each( torrents + j, data ) )
350 break;
351
352 mutex_bucket_unlock( bucket, 0 );
353 if( !g_opentracker_running ) return;
354 }
355}
356
340void exerr( char * message ) { 357void exerr( char * message ) {
341 fprintf( stderr, "%s\n", message ); 358 fprintf( stderr, "%s\n", message );
342 exit( 111 ); 359 exit( 111 );
@@ -358,7 +375,7 @@ void trackerlogic_init( ) {
358void trackerlogic_deinit( void ) { 375void trackerlogic_deinit( void ) {
359 int bucket, delta_torrentcount = 0; 376 int bucket, delta_torrentcount = 0;
360 size_t j; 377 size_t j;
361 378
362 /* Free all torrents... */ 379 /* Free all torrents... */
363 for(bucket=0; bucket<OT_BUCKET_COUNT; ++bucket ) { 380 for(bucket=0; bucket<OT_BUCKET_COUNT; ++bucket ) {
364 ot_vector *torrents_list = mutex_bucket_lock( bucket ); 381 ot_vector *torrents_list = mutex_bucket_lock( bucket );