]> git.ipfire.org Git - thirdparty/opentracker.git/commitdiff
Live Sync for peers that do not come back too early.
authorerdgeist <>
Mon, 1 Dec 2008 17:56:53 +0000 (17:56 +0000)
committererdgeist <>
Mon, 1 Dec 2008 17:56:53 +0000 (17:56 +0000)
trackerlogic.c
trackerlogic.h

index faca19b02acf85e02301bf62690a8aea2932b1d6..05c00b05d48f2513d618a0913a458e1083beb3c6 100644 (file)
@@ -103,6 +103,16 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer  WANT_SYNC_PARAM(
   } else {
     stats_issue_event( EVENT_RENEW, 0, OT_PEERTIME( peer_dest ) );
 
+#ifdef WANT_SYNC_LIVE
+    /* Won't live sync peers that come back too fast. Only exception:
+       fresh "completed" reports */
+    if( !from_sync ) {
+      if( OT_PEERTIME( peer_dest ) > OT_CLIENT_SYNC_RENEW_BOUNDARY ||
+         ( !(OT_FLAG(peer_dest) & PEER_FLAG_COMPLETED ) && (OT_FLAG(peer) & PEER_FLAG_COMPLETED ) ) )
+        livesync_tell( hash, peer );
+    }
+#endif
+    
     if(  (OT_FLAG(peer_dest) & PEER_FLAG_SEEDING )   && !(OT_FLAG(peer) & PEER_FLAG_SEEDING ) )
       torrent->peer_list->seed_count--;
     if( !(OT_FLAG(peer_dest) & PEER_FLAG_SEEDING )   &&  (OT_FLAG(peer) & PEER_FLAG_SEEDING ) )
index c2d071a6c6744de4d0616a5a9f1aa0cb03488233..0b73d5e6423ef5d748cb535b635c068bddf65a6d 100644 (file)
@@ -26,6 +26,9 @@ typedef time_t         ot_time;
 
 #define OT_CLIENT_REQUEST_INTERVAL_RANDOM ( OT_CLIENT_REQUEST_INTERVAL - OT_CLIENT_REQUEST_VARIATION/2 + (int)( random( ) % OT_CLIENT_REQUEST_VARIATION ) )
 
+/* If peers come back before 10 minutes, don't live sync them */
+#define OT_CLIENT_SYNC_RENEW_BOUNDARY 10
+
 /* We maintain a list of 1024 pointers to sorted list of ot_torrent structs
    Sort key is, of course, its hash */
 #define OT_BUCKET_COUNT 1024