From d036dc7ee4e0907554a1aed65d3ce84020052b69 Mon Sep 17 00:00:00 2001 From: Vurliy Date: Sat, 31 Oct 2026 21:46:26 +0000 Subject: [PATCH] fix(onedrive): refresh token on drive quota query and retry only once getDrive (used for storage capacity) was the only request that opted out of the InvalidAuthenticationToken refresh, so an expired token made the capacity query fail until another request happened to refresh it. Let it refresh like every other request. The retry after a refresh did not pass noRetry, so a token that stayed invalid after a successful refresh recursed without bound. Retry once. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01U5btuswaVrY7Lp7FWWVEHh --- drivers/onedrive/util.go | 5 +++-- drivers/onedrive_app/util.go | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/onedrive/util.go b/drivers/onedrive/util.go index ad300af44c..945f5fee78 100644 --- a/drivers/onedrive/util.go +++ b/drivers/onedrive/util.go @@ -156,7 +156,8 @@ func (d *Onedrive) Request(url string, method string, callback base.ReqCallback, if err != nil { return nil, err } - return d.Request(url, method, callback, resp) + // retry once with the refreshed token, never loop on a bad token + return d.Request(url, method, callback, resp, true) } return nil, errors.New(e.Error.Message) } @@ -310,7 +311,7 @@ func (d *Onedrive) getDrive(ctx context.Context) (*DriveResp, error) { var resp DriveResp _, err := d.Request(api, http.MethodGet, func(req *resty.Request) { req.SetContext(ctx) - }, &resp, true) + }, &resp) if err != nil { return nil, err } diff --git a/drivers/onedrive_app/util.go b/drivers/onedrive_app/util.go index 574afb381e..c85988e067 100644 --- a/drivers/onedrive_app/util.go +++ b/drivers/onedrive_app/util.go @@ -109,7 +109,8 @@ func (d *OnedriveAPP) Request(url string, method string, callback base.ReqCallba if err != nil { return nil, err } - return d.Request(url, method, callback, resp) + // retry once with the refreshed token, never loop on a bad token + return d.Request(url, method, callback, resp, true) } return nil, errors.New(e.Error.Message) } @@ -217,7 +218,7 @@ func (d *OnedriveAPP) getDrive(ctx context.Context) (*DriveResp, error) { var resp DriveResp _, err := d.Request(api, http.MethodGet, func(req *resty.Request) { req.SetContext(ctx) - }, &resp, true) + }, &resp) if err != nil { return nil, err }