summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ot_fullscrape.c2
-rw-r--r--src/trackerlogic.c15
-rw-r--r--src/trackerlogic.h12
3 files changed, 18 insertions, 11 deletions
diff --git a/src/ot_fullscrape.c b/src/ot_fullscrape.c
index 895d7d2..85be65d 100644
--- a/src/ot_fullscrape.c
+++ b/src/ot_fullscrape.c
@@ -131,7 +131,7 @@ static void fullscrape_write_one( ot_tasktype mode, char **cursor, ot_torrent *t
131 case TASK_FULLSCRAPE_TRACKERSTATE: 131 case TASK_FULLSCRAPE_TRACKERSTATE:
132 hex_from_hash(r, *hash); 132 hex_from_hash(r, *hash);
133 r += 2 * sizeof(ot_hash); 133 r += 2 * sizeof(ot_hash);
134 fmt_append(&r, r_end, ":%zd:%zd\n", torrent->peer_list6->base, down_count); 134 fmt_append(&r, r_end, ":%zd:%zd\n", (ssize_t)time_since_minutes(torrent->peer_list6->base), down_count);
135 break; 135 break;
136 } 136 }
137 *cursor = r; 137 *cursor = r;
diff --git a/src/trackerlogic.c b/src/trackerlogic.c
index 8e30a48..60d5b18 100644
--- a/src/trackerlogic.c
+++ b/src/trackerlogic.c
@@ -38,10 +38,17 @@ void free_peerlist(ot_peerlist *peer_list) {
38 free(peer_list); 38 free(peer_list);
39} 39}
40 40
41void add_torrent_from_saved_state(ot_hash const hash, ot_time base, size_t down_count) { 41/* How many minutes before this moment the torrent was last touched, which is
42 what a state dump records. */
43void add_torrent_from_saved_state(ot_hash const hash, ot_time age, size_t down_count) {
42 int exactmatch; 44 int exactmatch;
43 ot_torrent *torrent; 45 ot_torrent *torrent;
44 ot_vector *torrents_list = mutex_bucket_lock_by_hash(hash); 46 ot_vector *torrents_list;
47
48 if (age > OT_TORRENT_TIMEOUT)
49 return;
50
51 torrents_list = mutex_bucket_lock_by_hash(hash);
45 52
46 if (!accesslist_hashisvalid(hash)) { 53 if (!accesslist_hashisvalid(hash)) {
47 mutex_bucket_unlock_by_hash(hash, 0); 54 mutex_bucket_unlock_by_hash(hash, 0);
@@ -66,8 +73,8 @@ void add_torrent_from_saved_state(ot_hash const hash, ot_time base, size_t down_
66 73
67 memset(torrent->peer_list6, 0, sizeof(ot_peerlist)); 74 memset(torrent->peer_list6, 0, sizeof(ot_peerlist));
68 memset(torrent->peer_list4, 0, sizeof(ot_peerlist)); 75 memset(torrent->peer_list4, 0, sizeof(ot_peerlist));
69 torrent->peer_list6->base = base; 76 torrent->peer_list6->base = time_now_minutes() - age;
70 torrent->peer_list4->base = base; 77 torrent->peer_list4->base = time_now_minutes() - age;
71 torrent->peer_list6->down_count = down_count; 78 torrent->peer_list6->down_count = down_count;
72 torrent->peer_list4->down_count = down_count; 79 torrent->peer_list4->down_count = down_count;
73 80
diff --git a/src/trackerlogic.h b/src/trackerlogic.h
index c8d859c..f6aa8cc 100644
--- a/src/trackerlogic.h
+++ b/src/trackerlogic.h
@@ -76,12 +76,12 @@ typedef struct {
76 on startup */ 76 on startup */
77#define RANDOMTORRENTS (1024 * 1024 * 1) 77#define RANDOMTORRENTS (1024 * 1024 * 1)
78 78
79#if defined(CLOCK_REALTIME_COARSE) 79#if defined(CLOCK_MONOTONIC_COARSE)
80#define OT_CLOCK_CHEAP CLOCK_REALTIME_COARSE /* Linux */ 80#define OT_CLOCK_CHEAP CLOCK_MONOTONIC_COARSE /* Linux and FreeBSD */
81#elif defined(CLOCK_REALTIME_FAST) 81#elif defined(CLOCK_MONOTONIC_FAST)
82#define OT_CLOCK_CHEAP CLOCK_REALTIME_FAST /* the BSDs */ 82#define OT_CLOCK_CHEAP CLOCK_MONOTONIC_FAST /* the other BSDs */
83#else 83#else
84#define OT_CLOCK_CHEAP CLOCK_REALTIME /* macOS and whatever else */ 84#define OT_CLOCK_CHEAP CLOCK_MONOTONIC /* macOS and whatever else */
85#endif 85#endif
86 86
87static inline ot_time time_now_seconds(void) { 87static inline ot_time time_now_seconds(void) {
@@ -285,7 +285,7 @@ size_t add_peer_to_torrent_and_return_peers(PROTO_FLAG proto, struct ot_workstru
285size_t remove_peer_from_torrent(PROTO_FLAG proto, struct ot_workstruct *ws); 285size_t remove_peer_from_torrent(PROTO_FLAG proto, struct ot_workstruct *ws);
286void return_tcp_scrape_for_torrent(ot_hash const *hash_list, size_t amount, char **reply, const char *reply_end); 286void return_tcp_scrape_for_torrent(ot_hash const *hash_list, size_t amount, char **reply, const char *reply_end);
287size_t return_udp_scrape_for_torrent(ot_hash const hash, char *reply); 287size_t return_udp_scrape_for_torrent(ot_hash const hash, char *reply);
288void add_torrent_from_saved_state(ot_hash const hash, ot_time base, size_t down_count); 288void add_torrent_from_saved_state(ot_hash const hash, ot_time age, size_t down_count);
289#ifdef _DEBUG_RANDOMTORRENTS 289#ifdef _DEBUG_RANDOMTORRENTS
290void trackerlogic_add_random_torrents(size_t amount); 290void trackerlogic_add_random_torrents(size_t amount);
291#endif 291#endif