Skip to content

Commit b9ec40a

Browse files
authored
Merge branch 'main' into ndyakov/update-changelog
2 parents 6484bef + fe11795 commit b9ec40a

File tree

2 files changed

+528
-4
lines changed

2 files changed

+528
-4
lines changed

credentials_provider.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,12 @@ type entraidCredentialsProvider struct {
3535
// It notifies all registered listeners with the new token.
3636
func (e *entraidCredentialsProvider) onTokenNext(t *token.Token) {
3737
e.rwLock.RLock()
38-
defer e.rwLock.RUnlock()
38+
// Make a deep copy of the listeners slice to avoid data race
39+
listeners := make([]auth.CredentialsListener, len(e.listeners))
40+
copy(listeners, e.listeners)
41+
e.rwLock.RUnlock()
3942
// Notify all listeners with the new token.
40-
for _, listener := range e.listeners {
43+
for _, listener := range listeners {
4144
listener.OnNext(t)
4245
}
4346
}
@@ -46,10 +49,13 @@ func (e *entraidCredentialsProvider) onTokenNext(t *token.Token) {
4649
// It notifies all registered listeners with the error.
4750
func (e *entraidCredentialsProvider) onTokenError(err error) {
4851
e.rwLock.RLock()
49-
defer e.rwLock.RUnlock()
52+
// Make a deep copy of the listeners slice to avoid data race
53+
listeners := make([]auth.CredentialsListener, len(e.listeners))
54+
copy(listeners, e.listeners)
55+
e.rwLock.RUnlock()
5056

5157
// Notify all listeners with the error
52-
for _, listener := range e.listeners {
58+
for _, listener := range listeners {
5359
listener.OnError(err)
5460
}
5561
}

0 commit comments

Comments
 (0)