diff --git a/internal/protocol/http/fetcher.go b/internal/protocol/http/fetcher.go index 866dc15a..5bbfdb10 100644 --- a/internal/protocol/http/fetcher.go +++ b/internal/protocol/http/fetcher.go @@ -17,7 +17,6 @@ import ( "os" "path" "strconv" - "time" ) type RequestError struct { @@ -85,13 +84,14 @@ func (f *Fetcher) Resolve(req *base.Request) error { return err } client := buildClient() - // 只访问一个字节,测试资源是否支持Range请求 + // send Range request to check whether the server supports breakpoint continuation + // just test one byte, Range: bytes=0-0 httpReq.Header.Set(base.HttpHeaderRange, fmt.Sprintf(base.HttpHeaderRangeFormat, 0, 0)) httpResp, err := client.Do(httpReq) if err != nil { return err } - // 拿到响应头就关闭,不用加defer + // close response body immediately httpResp.Body.Close() res := &base.Resource{ Range: false, @@ -395,8 +395,7 @@ func buildClient() *http.Client { // Cookie handle jar, _ := cookiejar.New(nil) return &http.Client{ - Jar: jar, - Timeout: time.Second * 60, + Jar: jar, } } diff --git a/pkg/download/downloader.go b/pkg/download/downloader.go index 6c1742ff..126be482 100644 --- a/pkg/download/downloader.go +++ b/pkg/download/downloader.go @@ -528,7 +528,9 @@ func (d *Downloader) watch(task *Task) { d.emit(EventKeyDone, task) } d.emit(EventKeyFinally, task, err) - d.notifyRunning() + if task.Status == EventKeyDone { + d.notifyRunning() + } } func (d *Downloader) restoreFetcher(task *Task) error {