YouROK / TorrServer

Torrent stream server
GNU General Public License v3.0
1.34k stars 178 forks source link

fix AddExpiredTime function #392

Closed oshitikov closed 1 month ago

oshitikov commented 1 month ago

Поймал бесячий баг, когда таймаут отключения торрента больше 1 минуты. В чем суть:

  1. В функции GetTorrent (server/torr/apihelper.go:88) захардкожен вызов AddExpiredTime с 1 минутой
  2. На Preload (server/torr/preload.go:67) и CloseReader (server/torr/torrent.go:255) AddExpiredTime вызывается со значением из конфига.

В итоге получается, когда вызовы из пункта 1 и пункта 2 идут в произвольном порядке во времени (из-за поллингов на клиентах это легко воспроизвести даже при работе с 1 устройства, еще легче с нескольких устройств), то может возникнуть ситуация, когда торрент закроется через минуту, даже если таймаут выставлен, например, 30 минут. То есть, последним оказался вызов на GetTorrent.

Фикс получился простой и вроде логичный. Вряд ли ожидается, что AddExpiredTime может сократить время жизни торрента.