From 6f07e85b5a2e6fd19ec890d065d2828fcafaae6c Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Tue, 22 Dec 2020 16:23:52 +0300 Subject: [PATCH] maybe fix crash when setup settings and reconnect bt client --- src/server/torr/btserver.go | 1 + src/server/torr/torrent.go | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/server/torr/btserver.go b/src/server/torr/btserver.go index e06db6c..9c18652 100644 --- a/src/server/torr/btserver.go +++ b/src/server/torr/btserver.go @@ -46,6 +46,7 @@ func (bt *BTServer) Disconnect() { defer bt.mu.Unlock() if bt.client != nil { bt.client.Close() + InitApiHelper(nil) bt.client = nil utils.FreeOSMemGC() } diff --git a/src/server/torr/torrent.go b/src/server/torr/torrent.go index c6f08ef..77b3149 100644 --- a/src/server/torr/torrent.go +++ b/src/server/torr/torrent.go @@ -1,6 +1,7 @@ package torr import ( + "errors" "fmt" "io" "sort" @@ -51,6 +52,10 @@ type Torrent struct { } func NewTorrent(spec *torrent.TorrentSpec, bt *BTServer) (*Torrent, error) { + // TODO panic when settings sets + if bt == nil { + return nil, errors.New("BT client not connected") + } switch settings.BTsets.RetrackersMode { case 1: spec.Trackers = append(spec.Trackers, [][]string{utils.GetDefTrackers()}...) @@ -282,12 +287,12 @@ func (t *Torrent) Preload(index int, size int64) { t.PreloadedBytes = t.Torrent.BytesCompleted() t.muTorrent.Unlock() - stat := fmt.Sprint(file.Torrent().InfoHash().HexString(), utils2.Format(float64(t.PreloadedBytes)), "/", utils2.Format(float64(t.PreloadSize)), "Speed:", utils2.Format(t.DownloadSpeed), "Peers:[", t.Torrent.Stats().ConnectedSeeders, "]", t.Torrent.Stats().ActivePeers, "/", t.Torrent.Stats().TotalPeers) + stat := fmt.Sprint(file.Torrent().InfoHash().HexString(), " ", utils2.Format(float64(t.PreloadedBytes)), "/", utils2.Format(float64(t.PreloadSize)), " Speed:", utils2.Format(t.DownloadSpeed), " Peers:[", t.Torrent.Stats().ConnectedSeeders, "]", t.Torrent.Stats().ActivePeers, "/", t.Torrent.Stats().TotalPeers) if stat != lastStat { log.TLogln("Preload:", stat) lastStat = stat } - time.Sleep(time.Millisecond * 500) + time.Sleep(time.Millisecond * 1000) } log.TLogln("End preload:", file.Torrent().InfoHash().HexString(), "Peers:[", t.Torrent.Stats().ConnectedSeeders, "]", t.Torrent.Stats().ActivePeers, "/", t.Torrent.Stats().TotalPeers) }