From 4b0af472301b1081c4821c65875c9f50824ebd3a Mon Sep 17 00:00:00 2001 From: Dmitry Chestnykh Date: Wed, 25 Mar 2015 22:35:41 +0100 Subject: Simplify FilesystemStore save and load. Use ioutil package to write and read files. --- store.go | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) (limited to 'store.go') diff --git a/store.go b/store.go index b3461b0..24b466f 100644 --- a/store.go +++ b/store.go @@ -6,7 +6,7 @@ package sessions import ( "encoding/base32" - "io" + "io/ioutil" "net/http" "os" "strings" @@ -218,38 +218,16 @@ func (s *FilesystemStore) save(session *Session) error { filename := s.path + "session_" + session.ID fileMutex.Lock() defer fileMutex.Unlock() - fp, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return err - } - defer fp.Close() - if _, err = fp.Write([]byte(encoded)); err != nil { - return err - } - return nil + return ioutil.WriteFile(filename, []byte(encoded), 0600) } // load reads a file and decodes its content into session.Values. func (s *FilesystemStore) load(session *Session) error { filename := s.path + "session_" + session.ID - fp, err := os.OpenFile(filename, os.O_RDONLY, 0400) + fdata, err := ioutil.ReadFile(filename) if err != nil { return err } - defer fp.Close() - var fdata []byte - buf := make([]byte, 128) - for { - var n int - n, err = fp.Read(buf[0:]) - fdata = append(fdata, buf[0:n]...) - if err != nil { - if err == io.EOF { - break - } - return err - } - } if err = securecookie.DecodeMulti(session.Name(), string(fdata), &session.Values, s.Codecs...); err != nil { return err -- cgit v1.2.3 From 9a1a995303506329f3fc682912d3baa7b937a724 Mon Sep 17 00:00:00 2001 From: Dmitry Chestnykh Date: Wed, 25 Mar 2015 22:40:48 +0100 Subject: Add missing fileMutex read locking. --- store.go | 2 ++ 1 file changed, 2 insertions(+) (limited to 'store.go') diff --git a/store.go b/store.go index 24b466f..13cd1db 100644 --- a/store.go +++ b/store.go @@ -224,6 +224,8 @@ func (s *FilesystemStore) save(session *Session) error { // load reads a file and decodes its content into session.Values. func (s *FilesystemStore) load(session *Session) error { filename := s.path + "session_" + session.ID + fileMutex.RLock() + defer fileMutex.RUnlock() fdata, err := ioutil.ReadFile(filename) if err != nil { return err -- cgit v1.2.3