Exile
Administrator
Статус: Уже исправлено в движке
Описанная проблема была актуальна ранее, но в текущей версии движка она уже полностью решена.
Суть проблемы
При анонсе гибридного торрента (BitTorrent v1 + v2) клиент отправляет два запроса с разными info_hash:
Поскольку
Как это уже решено
В движке реализован полноценный механизм дедупликации гибридных торрентов:
Настройка
В файле
Никаких действий не требуется — механизм работает корректно.
Описанная проблема была актуальна ранее, но в текущей версии движка она уже полностью решена.
Суть проблемы
При анонсе гибридного торрента (BitTorrent v1 + v2) клиент отправляет два запроса с разными info_hash:
- Первый запрос с v1 info_hash (SHA-1, 20 байт)
- Второй запрос с v2 info_hash (SHA-256, обрезанный до 20 байт)
Поскольку
peer_hash = hash('xxh128', $passkey . $info_hash_hex . $port), каждый запрос генерировал свой peer_hash, создавая два разных пира в bb_bt_tracker для одного реального сида. Это приводило к удвоению счётчиков сидов/личей.Как это уже решено
В движке реализован полноценный механизм дедупликации гибридных торрентов:
- При регистрации торрента (
src/Torrent/Registry.php) движок определяет тип торрента (v1, v2 или гибридный) и сохраняет оба хэша:info_hash(SHA-1) иinfo_hash_v2(SHA-256) в таблицуbb_bt_torrents. - При announce (
app/Http/Controllers/Tracker/AnnounceController.php) — если торрент является гибридным (имеет оба хэша), движок определяет "канонический" хэш через настройкуtracker.hybrid_stat_protocol:- Значение
1(по умолчанию) — каноническим считается v1 info_hash - Значение
2— каноническим считается обрезанный v2 info_hash
- Значение
- Флаг
hybrid_unrecord— если клиент анонсирует с неканоническим хэшем, устанавливается флаг$hybrid_unrecord = true, который полностью блокирует запись вbb_bt_tracker(и INSERT, и UPDATE пропускаются). Пир записывается только при анонсе с каноническим хэшем. - Кэширование — флаг
hybrid_unrecordсохраняется в кэше, поэтому последующие анонсы с неканоническим хэшем также пропускаются без обращения к БД.
Настройка
В файле
config/tracker.php доступны следующие параметры:
PHP:
'hybrid_stat_protocol' => 1, // Какой хэш использовать для статистики (1 = v1, 2 = v2)
'disabled_v1_torrents' => false, // Запрет загрузки v1-only торрентов
'disabled_v2_torrents' => false, // Запрет загрузки v2-only торрентов
Никаких действий не требуется — механизм работает корректно.