@@ -78,6 +78,9 @@ func NewMemoryTokenStore() *MemoryTokenStore {
78
78
79
79
// GetToken returns the current token
80
80
func (s * MemoryTokenStore ) GetToken (ctx context.Context ) (* Token , error ) {
81
+ if err := ctx .Err (); err != nil {
82
+ return nil , err
83
+ }
81
84
s .mu .RLock ()
82
85
defer s .mu .RUnlock ()
83
86
if s .token == nil {
@@ -88,6 +91,9 @@ func (s *MemoryTokenStore) GetToken(ctx context.Context) (*Token, error) {
88
91
89
92
// SaveToken saves a token
90
93
func (s * MemoryTokenStore ) SaveToken (ctx context.Context , token * Token ) error {
94
+ if err := ctx .Err (); err != nil {
95
+ return err
96
+ }
91
97
s .mu .Lock ()
92
98
defer s .mu .Unlock ()
93
99
s .token = token
@@ -151,6 +157,11 @@ func (h *OAuthHandler) GetAuthorizationHeader(ctx context.Context) (string, erro
151
157
// getValidToken returns a valid token, refreshing if necessary
152
158
func (h * OAuthHandler ) getValidToken (ctx context.Context ) (* Token , error ) {
153
159
token , err := h .config .TokenStore .GetToken (ctx )
160
+ if err != nil {
161
+ if errors .Is (err , context .Canceled ) || errors .Is (err , context .DeadlineExceeded ) {
162
+ return nil , err
163
+ }
164
+ }
154
165
if err == nil && ! token .IsExpired () && token .AccessToken != "" {
155
166
return token , nil
156
167
}
@@ -218,7 +229,10 @@ func (h *OAuthHandler) refreshToken(ctx context.Context, refreshToken string) (*
218
229
}
219
230
220
231
// If no new refresh token is provided, keep the old one
221
- oldToken , _ := h .config .TokenStore .GetToken (ctx )
232
+ oldToken , oldErr := h .config .TokenStore .GetToken (ctx )
233
+ if oldErr != nil && (errors .Is (oldErr , context .Canceled ) || errors .Is (oldErr , context .DeadlineExceeded )) {
234
+ return nil , oldErr
235
+ }
222
236
if tokenResp .RefreshToken == "" && oldToken != nil {
223
237
tokenResp .RefreshToken = oldToken .RefreshToken
224
238
}
0 commit comments