6
6
"encoding/json"
7
7
"fmt"
8
8
"strings"
9
+ "sync"
9
10
"time"
10
11
11
12
"github.com/ethereum/go-ethereum/log"
@@ -22,6 +23,7 @@ type TokenHolder struct {
22
23
peerUpdater RunningPeerAuthUpdater
23
24
timer * time.Timer
24
25
eta time.Time
26
+ lock sync.Mutex
25
27
}
26
28
27
29
func NewTokenHolder (psi string , pluginManager * plugin.PluginManager ) (* TokenHolder , error ) {
@@ -92,16 +94,7 @@ func (h *TokenHolder) refreshPlugin(pluginManager plugin.PluginManagerInterface,
92
94
}
93
95
94
96
func (h * TokenHolder ) HttpCredentialsProvider (ctx context.Context ) (string , error ) {
95
- if h .plugin != nil {
96
- log .Debug ("HttpCredentialsProvider using plugin" )
97
- err := h .updateTimer ()
98
- if err != nil {
99
- log .Warn ("update token timer" , "err" , err )
100
- }
101
- return h .plugin .TokenRefresh (ctx , h .token , h .psi )
102
- }
103
- log .Debug ("HttpCredentialsProvider using token" )
104
- return h .token , nil
97
+ return h .CurrentToken (), nil
105
98
}
106
99
107
100
func (h * TokenHolder ) ReloadPlugin () error {
@@ -134,6 +127,8 @@ func (h *TokenHolder) CurrentToken() string {
134
127
if ! expired {
135
128
return h .token
136
129
}
130
+ h .lock .Lock ()
131
+ defer h .lock .Unlock ()
137
132
returnedToken , err := h .plugin .TokenRefresh (context .Background (), h .token , h .psi )
138
133
if err != nil {
139
134
log .Error ("get token from plugin" , "err" , err )
@@ -221,7 +216,7 @@ func (h *TokenHolder) tokenExpirationDelay() (time.Duration, error) {
221
216
func (h * TokenHolder ) tokenExpired () (bool , error ) {
222
217
expireIn , err := h .tokenExpirationDelay ()
223
218
if err != nil {
224
- return false , err
219
+ return true , err
225
220
}
226
221
return expireIn < time .Duration (h .refreshAnticipation )* time .Millisecond , nil
227
222
}
0 commit comments