summaryrefslogtreecommitdiff
path: root/trackerlogic.c
diff options
context:
space:
mode:
Diffstat (limited to 'trackerlogic.c')
-rw-r--r--trackerlogic.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/trackerlogic.c b/trackerlogic.c
index 8ebaa46..1bd8ac7 100644
--- a/trackerlogic.c
+++ b/trackerlogic.c
@@ -41,6 +41,33 @@ void free_peerlist( ot_peerlist *peer_list ) {
41 free( peer_list ); 41 free( peer_list );
42} 42}
43 43
44void add_torrent_from_saved_state( ot_hash hash, ot_time base, size_t down_count ) {
45 int exactmatch;
46 ot_torrent *torrent;
47 ot_vector *torrents_list = mutex_bucket_lock_by_hash( hash );
48
49 if( !accesslist_hashisvalid( hash ) )
50 return mutex_bucket_unlock_by_hash( hash, 0 );
51
52 torrent = vector_find_or_insert( torrents_list, (void*)hash, sizeof( ot_torrent ), OT_HASH_COMPARE_SIZE, &exactmatch );
53 if( !torrent || exactmatch )
54 return mutex_bucket_unlock_by_hash( hash, 0 );
55
56 /* Create a new torrent entry, then */
57 memcpy( torrent->hash, hash, sizeof(ot_hash) );
58
59 if( !( torrent->peer_list = malloc( sizeof (ot_peerlist) ) ) ) {
60 vector_remove_torrent( torrents_list, torrent );
61 return mutex_bucket_unlock_by_hash( hash, 0 );
62 }
63
64 byte_zero( torrent->peer_list, sizeof( ot_peerlist ) );
65 torrent->peer_list->base = base;
66 torrent->peer_list->down_count = down_count;
67
68 return mutex_bucket_unlock_by_hash( hash, 1 );
69}
70
44size_t add_peer_to_torrent_and_return_peers( ot_hash hash, ot_peer *peer, PROTO_FLAG proto, size_t amount, char * reply ) { 71size_t add_peer_to_torrent_and_return_peers( ot_hash hash, ot_peer *peer, PROTO_FLAG proto, size_t amount, char * reply ) {
45 int exactmatch, delta_torrentcount = 0; 72 int exactmatch, delta_torrentcount = 0;
46 size_t reply_size; 73 size_t reply_size;
@@ -375,7 +402,7 @@ void trackerlogic_init( ) {
375void trackerlogic_deinit( void ) { 402void trackerlogic_deinit( void ) {
376 int bucket, delta_torrentcount = 0; 403 int bucket, delta_torrentcount = 0;
377 size_t j; 404 size_t j;
378 405
379 /* Free all torrents... */ 406 /* Free all torrents... */
380 for(bucket=0; bucket<OT_BUCKET_COUNT; ++bucket ) { 407 for(bucket=0; bucket<OT_BUCKET_COUNT; ++bucket ) {
381 ot_vector *torrents_list = mutex_bucket_lock( bucket ); 408 ot_vector *torrents_list = mutex_bucket_lock( bucket );