From 50e305390d6db089de761ad00c81f5dca47f5b01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B8nstantine=20Kovalensky?= <45331093+kovalensky@users.noreply.github.com> Date: Fri, 6 Oct 2023 16:15:11 +0400 Subject: [PATCH] Prioritize returning leecher list for seeder announces (#961) * Show IPv6 peers for cached announces --- bt/announce.php | 7 +++++-- bt/includes/init_tr.php | 4 ++++ src/Helpers/IPHelper.php | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bt/announce.php b/bt/announce.php index fb5a28518..4654be022 100644 --- a/bt/announce.php +++ b/bt/announce.php @@ -58,7 +58,7 @@ if (!isset($peer_id)) { msg_die('peer_id was not provided'); } if (strlen($peer_id) !== 20) { - msg_die('Invalid peer_id: ' . bin2hex($peer_id)); + msg_die('Invalid peer_id: ' . $peer_id); } // Verify info_hash @@ -361,16 +361,19 @@ if (!$output) { $numwant = (int)$bb_cfg['tracker']['numwant']; $compact_mode = ($bb_cfg['tracker']['compact_mode'] || !empty($compact)); + $leechers_only = $seeder ? 'AND seeder = 0' : ''; // Return leechers for seeders + $rowset = DB()->fetch_rowset(" SELECT ip, port FROM " . BB_BT_TRACKER . " WHERE topic_id = $topic_id + $leechers_only ORDER BY RAND() LIMIT $numwant "); if (empty($rowset)) { - $rowset[] = ['ip' => $ip, 'port' => $port]; + $rowset[] = ['ip' => long2ip(rand(1, 4294967295)), 'port' => rand(1, 65536)]; } if ($compact_mode) { diff --git a/bt/includes/init_tr.php b/bt/includes/init_tr.php index 9d0c06966..e1dbc83f3 100644 --- a/bt/includes/init_tr.php +++ b/bt/includes/init_tr.php @@ -74,6 +74,10 @@ function dummy_exit($interval = 1800, $cache_dict = []) $output['peers'] = $cache_dict['peers']; } + if (isset($cache_dict['peers6'])) { + $output['peers6'] = $cache_dict['peers6']; + } + $output = \Arokettu\Bencode\Bencode::encode($output); die($output); diff --git a/src/Helpers/IPHelper.php b/src/Helpers/IPHelper.php index 3f50af546..ba525c90e 100644 --- a/src/Helpers/IPHelper.php +++ b/src/Helpers/IPHelper.php @@ -61,7 +61,7 @@ class IPHelper extends Ip * @return string */ - public static function long2ip_extended($ip) + public static function long2ip_extended(string $ip): string { return self::long2ip($ip, $ip > 4294967295); }