diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ot_fullscrape.c | 2 | ||||
| -rw-r--r-- | src/trackerlogic.c | 15 | ||||
| -rw-r--r-- | src/trackerlogic.h | 12 |
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 | ||
| 41 | void 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. */ | ||
| 43 | void 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 | ||
| 87 | static inline ot_time time_now_seconds(void) { | 87 | static 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 | |||
| 285 | size_t remove_peer_from_torrent(PROTO_FLAG proto, struct ot_workstruct *ws); | 285 | size_t remove_peer_from_torrent(PROTO_FLAG proto, struct ot_workstruct *ws); |
| 286 | void return_tcp_scrape_for_torrent(ot_hash const *hash_list, size_t amount, char **reply, const char *reply_end); | 286 | void return_tcp_scrape_for_torrent(ot_hash const *hash_list, size_t amount, char **reply, const char *reply_end); |
| 287 | size_t return_udp_scrape_for_torrent(ot_hash const hash, char *reply); | 287 | size_t return_udp_scrape_for_torrent(ot_hash const hash, char *reply); |
| 288 | void add_torrent_from_saved_state(ot_hash const hash, ot_time base, size_t down_count); | 288 | void add_torrent_from_saved_state(ot_hash const hash, ot_time age, size_t down_count); |
| 289 | #ifdef _DEBUG_RANDOMTORRENTS | 289 | #ifdef _DEBUG_RANDOMTORRENTS |
| 290 | void trackerlogic_add_random_torrents(size_t amount); | 290 | void trackerlogic_add_random_torrents(size_t amount); |
| 291 | #endif | 291 | #endif |
