From b621f7cb3fed8334b4175c2c806f0b69dc545d31 Mon Sep 17 00:00:00 2001 From: r3inbowari <r3inbowari@gmail.com> Date: Sun, 10 Sep 2023 12:37:46 +0800 Subject: [PATCH] fix: unexpected signal kill on some linux releases (#150) * fix: unexpected signal kill on some linux releases * Release v1.6.6 --- speedtest/data_manager.go | 24 +++++++++++++----------- speedtest/speedtest.go | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/speedtest/data_manager.go b/speedtest/data_manager.go index 23cc753..47ce8b8 100644 --- a/speedtest/data_manager.go +++ b/speedtest/data_manager.go @@ -176,9 +176,10 @@ func (f *funcGroup) Start(cancel context.CancelFunc, mainRequestHandlerIndex int dbg.Printf("auxN: %d\n", auxN) wg := sync.WaitGroup{} f.manager.running = true - ticker := f.manager.rateCapture() + stopCapture := f.manager.rateCapture() time.AfterFunc(f.manager.captureTime, func() { - ticker.Stop() + stopCapture <- true + close(stopCapture) f.manager.running = false cancel() dbg.Println("FuncGroup: Stop") @@ -220,15 +221,16 @@ func (f *funcGroup) Start(cancel context.CancelFunc, mainRequestHandlerIndex int wg.Wait() } -func (dm *DataManager) rateCapture() *time.Ticker { +func (dm *DataManager) rateCapture() chan bool { ticker := time.NewTicker(dm.rateCaptureFrequency) oldTotalDownload := dm.totalDownload oldTotalUpload := dm.totalUpload - go func() { - loop: + stopCapture := make(chan bool) + go func(t *time.Ticker) { + defer t.Stop() for { select { - case <-ticker.C: + case <-t.C: newTotalDownload := dm.totalDownload newTotalUpload := dm.totalUpload deltaDownload := newTotalDownload - oldTotalDownload @@ -241,14 +243,14 @@ func (dm *DataManager) rateCapture() *time.Ticker { if deltaUpload != 0 { dm.UploadRateSequence = append(dm.UploadRateSequence, deltaUpload) } - default: - if !dm.running { - break loop + case stop := <-stopCapture: + if stop { + return } } } - }() - return ticker + }(ticker) + return stopCapture } func (dm *DataManager) NewChunk() Chunk { diff --git a/speedtest/speedtest.go b/speedtest/speedtest.go index c9177d6..5a64f05 100644 --- a/speedtest/speedtest.go +++ b/speedtest/speedtest.go @@ -11,7 +11,7 @@ import ( ) var ( - version = "1.6.5" + version = "1.6.6" DefaultUserAgent = fmt.Sprintf("showwin/speedtest-go %s", version) )