1
0
mirror of https://github.com/oauth2-proxy/oauth2-proxy.git synced 2025-05-27 23:08:10 +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)
if err != nil {
logger.Errorf("Unable to obtain lock: %v", err)
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
return s.handleObtainLockError(req, session)
}
defer func() {
err = session.ReleaseLock(req.Context())
@ -195,6 +187,18 @@ func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.R
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 {
sessionStored, err := s.store.Load(req)
if err != nil {