diff --git a/backend/pikpak/helper.go b/backend/pikpak/helper.go index a5ff0ca00..9bc8ea041 100644 --- a/backend/pikpak/helper.go +++ b/backend/pikpak/helper.go @@ -155,6 +155,7 @@ func (f *Fs) getFile(ctx context.Context, ID string) (info *api.File, err error) err = f.pacer.Call(func() (bool, error) { resp, err = f.rst.CallJSON(ctx, &opts, nil, &info) if err == nil && !info.Links.ApplicationOctetStream.Valid() { + time.Sleep(5 * time.Second) return true, errors.New("no link") } return f.shouldRetry(ctx, resp, err) diff --git a/backend/pikpak/pikpak.go b/backend/pikpak/pikpak.go index c1119a359..50de3f732 100644 --- a/backend/pikpak/pikpak.go +++ b/backend/pikpak/pikpak.go @@ -479,6 +479,11 @@ func (f *Fs) shouldRetry(ctx context.Context, resp *http.Response, err error) (b // when a zero-byte file was uploaded with an invalid captcha token f.rst.captcha.Invalidate() return true, err + } else if strings.Contains(apiErr.Reason, "idx.shub.mypikpak.com") && apiErr.Code == 500 { + // internal server error: Post "http://idx.shub.mypikpak.com": context deadline exceeded (Client.Timeout exceeded while awaiting headers) + // This typically happens when trying to retrieve a gcid for which no record exists. + // No retry is needed in this case. + return false, err } }