diff --git a/drivers/smb/driver.go b/drivers/smb/driver.go index 17875fe1..43f3e683 100644 --- a/drivers/smb/driver.go +++ b/drivers/smb/driver.go @@ -5,7 +5,6 @@ import ( "errors" "path/filepath" "strings" - "time" "github.com/alist-org/alist/v3/drivers/base" "github.com/alist-org/alist/v3/internal/driver" @@ -19,7 +18,7 @@ type SMB struct { model.Storage Addition fs *smb2.Share - lastConnTime time.Time + lastConnTime int64 } func (d *SMB) Config() driver.Config { diff --git a/drivers/smb/util.go b/drivers/smb/util.go index 68d2ae32..f4605536 100644 --- a/drivers/smb/util.go +++ b/drivers/smb/util.go @@ -6,17 +6,22 @@ import ( "net" "os" "path/filepath" + "sync/atomic" "time" "github.com/hirochachacha/go-smb2" ) func (d *SMB) updateLastConnTime() { - d.lastConnTime = time.Now() + atomic.StoreInt64(&d.lastConnTime, time.Now().Unix()) } func (d *SMB) cleanLastConnTime() { - d.lastConnTime = time.Now().AddDate(0, 0, -1) + atomic.StoreInt64(&d.lastConnTime, 0) +} + +func (d *SMB) getLastConnTime() time.Time { + return time.Unix(atomic.LoadInt64(&d.lastConnTime), 0) } func (d *SMB) initFS() error { @@ -43,7 +48,7 @@ func (d *SMB) initFS() error { } func (d *SMB) checkConn() error { - if time.Since(d.lastConnTime) < 5*time.Minute { + if time.Since(d.getLastConnTime()) < 5*time.Minute { return nil } if d.fs != nil {