@@ -20,7 +20,7 @@ import (
2020 "github.com/pusher/oauth2_proxy/pkg/sessions/utils"
2121)
2222
23−// TicketData is a structure representing a used in server session storage
23+// TicketData is a structure representing the ticket used in server session storage
2424type TicketData struct {
2525 TicketID string
2626 Secret []byte
@@ -77,6 +77,8 @@ func NewRedisSessionStore(opts options.RedisStoreOptions, cookieOpts *options.Co
7777// Save takes a sessions.SessionState and stores the information from it
7878// to redies, and adds a new ticket cookie on the HTTP response writer
7979func (store *SessionStore) Save(rw http.ResponseWriter, req *http.Request, s *sessions.SessionState) error {
80+ // Old sessions that we are refreshing would have a request cookie
81+ // New sessions don't, so we ignore the error. storeValue will check requestCookie
8082 requestCookie, _ := req.Cookie(store.CookieName)
8183 value, err := s.EncodeSessionState(store.CookieCipher)
8284 if err != nil {
@@ -106,7 +108,10 @@ func (store *SessionStore) Save(rw http.ResponseWriter, req *http.Request, s *se
106108// Load reads sessions.SessionState information from a ticket
107109// cookie within the HTTP request object
108110func (store *SessionStore) Load(req *http.Request) (*sessions.SessionState, error) {
109− requestCookie, _ := req.Cookie(store.CookieName)
111+ requestCookie, err := req.Cookie(store.CookieName)
112+ if err != nil {
113+ return nil, fmt.Errorf("error loading session: %s", err)
114+ }
110115 // No cookie validation necessary
111116 session, err := store.LoadSessionFromString(requestCookie.Value)
112117 if err != nil {