From 3cb7977c7287f22185d94114d5ce0441ca29e327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C8=98tefan=20Talpalaru?= Date: Wed, 10 May 2023 14:06:35 +0200 Subject: [PATCH] stop overcounting seeders/leechers Peers connect to all available trackers by default, so we should not count them more than once by adding up reported seeds/peers from individual trackers. Instead, we use the maximum reported value to get much more realistic stats. The probability of undercounting because different peers do not share trackers is very small and much less damaging than massive overcounting. --- src/trg-torrent-model.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c index 9e323f3..9a38969 100644 --- a/src/trg-torrent-model.c +++ b/src/trg-torrent-model.c @@ -131,8 +131,8 @@ static void trg_torrent_model_count_peers(TrgTorrentModel *model, GtkTreeIter *i for (li = trackersList; li; li = g_list_next(li)) { JsonObject *tracker = json_node_get_object((JsonNode *)li->data); - seeders += tracker_stats_get_seeder_count(tracker); - leechers += tracker_stats_get_leecher_count(tracker); + seeders = MAX(seeders, tracker_stats_get_seeder_count(tracker)); + leechers = MAX(leechers, tracker_stats_get_leecher_count(tracker)); downloads += tracker_stats_get_download_count(tracker); }