1
0
mirror of https://github.com/oauth2-proxy/oauth2-proxy.git synced 2025-05-29 23:17:38 +02:00

Refactor refreshSession method to reduce number of return

This commit is contained in:
Kevin Kreitner 2021-11-08 16:51:11 +01:00 committed by Joel Speed
parent 2781ea1c95
commit b734de16e6
No known key found for this signature in database
GPG Key ID: 6E80578D6751DEFB

View File

@ -145,15 +145,7 @@ func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.R
err := session.ObtainLock(req.Context(), SessionLockExpireTime) err := session.ObtainLock(req.Context(), SessionLockExpireTime)
if err != nil { if err != nil {
logger.Errorf("Unable to obtain lock: %v", err) logger.Errorf("Unable to obtain lock: %v", err)
wasRefreshed, err := s.checkForConcurrentRefresh(session, req) return s.handleObtainLockError(req, session)
if err != nil {
logger.Errorf("Unable to wait for obtained lock: %v", err)
return err
}
if !wasRefreshed {
return errors.New("unable to obtain lock and session was also not refreshed via concurrent request")
}
return nil
} }
defer func() { defer func() {
err = session.ReleaseLock(req.Context()) err = session.ReleaseLock(req.Context())
@ -195,6 +187,18 @@ func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.R
return err return err
} }
func (s *storedSessionLoader) handleObtainLockError(req *http.Request, session *sessionsapi.SessionState) error {
wasRefreshed, err := s.checkForConcurrentRefresh(session, req)
if err != nil {
logger.Errorf("Unable to wait for obtained lock: %v", err)
return err
}
if !wasRefreshed {
return errors.New("unable to obtain lock and session was also not refreshed via concurrent request")
}
return nil
}
func (s *storedSessionLoader) updateSessionFromStore(req *http.Request, session *sessionsapi.SessionState) error { func (s *storedSessionLoader) updateSessionFromStore(req *http.Request, session *sessionsapi.SessionState) error {
sessionStored, err := s.store.Load(req) sessionStored, err := s.store.Load(req)
if err != nil { if err != nil {