// Check info_hash length
if (strlen($info_hash) !== 20) {
OR SUBSTRING(tor.info_hash_v2, 1, 20)
msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
Потому что они сами обрезают хэш, но это временно, Qbit.... через пару минорных версий в запросах уже будет отправлять все символы.И торрент клиенты с v2 нормально реагируют на это
Сразу как это настанет, я уберу обрезание, либо сделаю проверку на то полный хэш отправляется или обрезанный, тем самым можно поддерживать любые версии клиентовПотому что они сами обрезают хэш, но это временно, Qbit.... через пару минорных версий в запросах уже будет отправлять все символы.
А какие-то клиенты уже практикуют такое? Я думал это был полет фантазии только разрабов qbittorrent резать хэш до 20 бит для совместимости. Торрент сайты сейчас скорее мертвы, чем живы, а перейти только на v2 значит полностью добить ихИсходя из этого, если какой-то свежий клиент, сделает полноценный BTv2 запрос, в ответ ему прилетит
//$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
$info_hash_hex = bin2hex($info_hash);
#info_hash varbinary(20)
#info_hash_v2 varbinary(32)
WHERE HEX(tor.info_hash) = '$info_hash_hex'
$info_hash_sql = bin2hex(rtrim(DB()->escape($info_hash), ' '));// старые торренты отвалилисиь пришлось вернуть этот костыль
...
WHERE HEX(tor.info_hash) = '$info_hash_hex'
OR HEX(tor.info_hash) = '$info_hash_sql'
OR HEX(tor.info_hash_v2) = '$info_hash_hex'
OR HEX(tor.info_hash_v2) LIKE '$info_hash_hex%'
Интересный подход... Но в корне неверный ! Не понимает, это пока ! Кстати гибридный торрент тоже временный... В любом случае останется только BTv2.К примеру если пользователь создает торрент в qbittorrent в формате только v2 и пытается прикрепить его к раздаче - я выдаю уведомление, что трекер не поддерживает такой торрент. Создавайте v1 или v1+v2 hybrid. Потому что полно сидеров с сидбоксами на том же трансмишне 3, который не понимет этот формат