mirror of
https://github.com/rclone/rclone.git
synced 2024-11-23 08:51:22 +08:00
acd: Fix panic on token expiry - fixes #1117
This commit is contained in:
parent
50e190ff54
commit
40c02989f1
|
@ -88,16 +88,15 @@ func init() {
|
||||||
|
|
||||||
// Fs represents a remote acd server
|
// Fs represents a remote acd server
|
||||||
type Fs struct {
|
type Fs struct {
|
||||||
name string // name of this remote
|
name string // name of this remote
|
||||||
features *fs.Features // optional features
|
features *fs.Features // optional features
|
||||||
c *acd.Client // the connection to the acd server
|
c *acd.Client // the connection to the acd server
|
||||||
noAuthClient *http.Client // unauthenticated http client
|
noAuthClient *http.Client // unauthenticated http client
|
||||||
root string // the path we are working on
|
root string // the path we are working on
|
||||||
dirCache *dircache.DirCache // Map of directory path to directory id
|
dirCache *dircache.DirCache // Map of directory path to directory id
|
||||||
pacer *pacer.Pacer // pacer for API calls
|
pacer *pacer.Pacer // pacer for API calls
|
||||||
ts *oauthutil.TokenSource // token source for oauth
|
trueRootID string // ID of true root directory
|
||||||
trueRootID string // ID of true root directory
|
tokenRenewer *oauthutil.Renew // renew the token on expiry
|
||||||
tokenRenewer *oauthutil.Renew // renew the token on expiry
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Object describes a acd object
|
// Object describes a acd object
|
||||||
|
@ -157,8 +156,8 @@ var retryErrorCodes = []int{
|
||||||
func (f *Fs) shouldRetry(resp *http.Response, err error) (bool, error) {
|
func (f *Fs) shouldRetry(resp *http.Response, err error) (bool, error) {
|
||||||
if resp != nil {
|
if resp != nil {
|
||||||
if resp.StatusCode == 401 {
|
if resp.StatusCode == 401 {
|
||||||
f.ts.Invalidate()
|
f.tokenRenewer.Invalidate()
|
||||||
fs.Log(f, "401 error received - invalidating token")
|
fs.Debug(f, "401 error received - invalidating token")
|
||||||
return true, err
|
return true, err
|
||||||
}
|
}
|
||||||
// Work around receiving this error sporadically on authentication
|
// Work around receiving this error sporadically on authentication
|
||||||
|
|
|
@ -62,3 +62,8 @@ func (r *Renew) Start() {
|
||||||
func (r *Renew) Stop() {
|
func (r *Renew) Stop() {
|
||||||
atomic.AddInt32(&r.uploads, -1)
|
atomic.AddInt32(&r.uploads, -1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Invalidate invalidates the token source
|
||||||
|
func (r *Renew) Invalidate() {
|
||||||
|
r.ts.Invalidate()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user