@@ -49,6 +49,8 @@ import (
49
49
"github.com/plgd-dev/go-coap/v3/tcp/client"
50
50
)
51
51
52
+ const tickInterval = time .Second * 10
53
+
52
54
type (
53
55
GetLinksFilteredBy func (endpoints schema.Endpoints , deviceIDfilter uuid.UUID , resourceTypesFitler []string , policyBitMaskFitler schema.BitMask ) (links schema.ResourceLinks )
54
56
GetCertificates func (deviceID string ) []tls.Certificate
@@ -216,7 +218,7 @@ func (c *Manager) Init() {
216
218
if c .private .cfg .URL != "" {
217
219
c .triggerRunner (false )
218
220
}
219
- t := time .NewTicker (time . Second * 10 )
221
+ t := time .NewTicker (tickInterval )
220
222
handlers := []eventloop.Handler {
221
223
eventloop .NewReadHandler (reflect .ValueOf (c .trigger ), c .handleTrigger ),
222
224
eventloop .NewReadHandler (reflect .ValueOf (t .C ), c .handleTimer ),
@@ -352,10 +354,16 @@ func (c *Manager) getCreds() ocfCloud.CoapSignUpResponse {
352
354
}
353
355
354
356
func (c * Manager ) isCredsExpiring () bool {
355
- if ! c . signedIn || c .creds .ValidUntil .IsZero () {
357
+ if c .creds .ValidUntil .IsZero () {
356
358
return false
357
359
}
358
- return ! time .Now ().Before (c .creds .ValidUntil .Add (- time .Second * 10 ))
360
+ diff := time .Until (c .creds .ValidUntil )
361
+ if diff < tickInterval * 2 {
362
+ // refresh token before it expires
363
+ return true
364
+ }
365
+ // refresh token when it is 1/3 before it expires
366
+ return time .Now ().After (c .creds .ValidUntil .Add (- diff / 3 ))
359
367
}
360
368
361
369
func getResourceTypesFilter (request * mux.Message ) []string {
0 commit comments