fix: use withlock for get oidc code entry

This commit is contained in:
Stavros
2026-06-02 12:14:10 +03:00
parent b3c152fa1c
commit b636e6ff57
+13 -3
View File
@@ -465,18 +465,28 @@ func (service *OIDCService) ValidateGrantType(grantType string) error {
} }
func (service *OIDCService) GetCodeEntry(codeHash string, clientId string) (*AuthorizeCodeEntry, bool) { func (service *OIDCService) GetCodeEntry(codeHash string, clientId string) (*AuthorizeCodeEntry, bool) {
entry, ok := service.caches.code.Get(codeHash) var entry AuthorizeCodeEntry
var ok bool
service.caches.code.WithLock(func(actions CacheStoreActions[AuthorizeCodeEntry]) {
entry, ok = service.caches.code.Get(codeHash)
if !ok { if !ok {
return nil, false return
} }
if entry.ClientID != clientId { if entry.ClientID != clientId {
return nil, false ok = false
return
} }
// Since the code can only be used once, we delete it from the cache after retrieving it // Since the code can only be used once, we delete it from the cache after retrieving it
service.caches.code.Delete(codeHash) service.caches.code.Delete(codeHash)
})
if !ok {
return nil, false
}
return &entry, true return &entry, true
} }