From 6ac8e1b84e67581f900fc8277070c5a5b686ab62 Mon Sep 17 00:00:00 2001 From: yourok <8yourok8@mail.ru> Date: Mon, 8 Jan 2024 19:16:00 +0300 Subject: [PATCH] fix remove cache on disk on reading torrent --- server/torr/apihelper.go | 21 +++++++++++---------- server/torr/btserver.go | 5 +++-- server/torr/torrent.go | 5 +++-- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/server/torr/apihelper.go b/server/torr/apihelper.go index 1384ec0..87e5fcb 100644 --- a/server/torr/apihelper.go +++ b/server/torr/apihelper.go @@ -140,18 +140,19 @@ func SetTorrent(hashHex, title, poster, data string) *Torrent { func RemTorrent(hashHex string) { hash := metainfo.NewHashFromHex(hashHex) - if sets.BTsets.UseDisk && hashHex != "" && hashHex != "/" { - name := filepath.Join(sets.BTsets.TorrentsSavePath, hashHex) - ff, _ := os.ReadDir(name) - for _, f := range ff { - os.Remove(filepath.Join(name, f.Name())) - } - err := os.Remove(name) - if err != nil { - log.TLogln("Error remove cache:", err) + if bts.RemoveTorrent(hash) { + if sets.BTsets.UseDisk && hashHex != "" && hashHex != "/" { + name := filepath.Join(sets.BTsets.TorrentsSavePath, hashHex) + ff, _ := os.ReadDir(name) + for _, f := range ff { + os.Remove(filepath.Join(name, f.Name())) + } + err := os.Remove(name) + if err != nil { + log.TLogln("Error remove cache:", err) + } } } - bts.RemoveTorrent(hash) RemTorrentDB(hash) } diff --git a/server/torr/btserver.go b/server/torr/btserver.go index 0878695..1c73417 100644 --- a/server/torr/btserver.go +++ b/server/torr/btserver.go @@ -200,10 +200,11 @@ func (bt *BTServer) ListTorrents() map[metainfo.Hash]*Torrent { return list } -func (bt *BTServer) RemoveTorrent(hash torrent.InfoHash) { +func (bt *BTServer) RemoveTorrent(hash torrent.InfoHash) bool { if torr, ok := bt.torrents[hash]; ok { - torr.Close() + return torr.Close() } + return false } func isPrivateIP(ip net.IP) bool { diff --git a/server/torr/torrent.go b/server/torr/torrent.go index a67a87d..6d95a20 100644 --- a/server/torr/torrent.go +++ b/server/torr/torrent.go @@ -265,9 +265,9 @@ func (t *Torrent) drop() { } } -func (t *Torrent) Close() { +func (t *Torrent) Close() bool { if t.cache != nil && t.cache.Readers() > 0 { - return + return false } t.Stat = state.TorrentClosed @@ -276,6 +276,7 @@ func (t *Torrent) Close() { t.bt.mu.Unlock() t.drop() + return true } func (t *Torrent) Status() *state.TorrentStatus {