From 4d9909cba5ccd7a7b55359241c8f04dfd45a55f8 Mon Sep 17 00:00:00 2001 From: Gerasimos Maropoulos Date: Wed, 9 May 2018 01:28:26 +0300 Subject: [PATCH] fix https://github.com/kataras/iris/issues/996 Former-commit-id: bcb8905faf20e08be1ef9ec203385a1a7440eebd --- sessions/database.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sessions/database.go b/sessions/database.go index 956ff6cd..2589c611 100644 --- a/sessions/database.go +++ b/sessions/database.go @@ -62,7 +62,11 @@ func (s *mem) Set(sid string, lifetime LifeTime, key string, value interface{}, } func (s *mem) Get(sid string, key string) interface{} { - return s.values[sid].Get(key) + s.mu.RLock() + v := s.values[sid].Get(key) + s.mu.RUnlock() + + return v } func (s *mem) Visit(sid string, cb func(key string, value interface{})) { @@ -70,7 +74,11 @@ func (s *mem) Visit(sid string, cb func(key string, value interface{})) { } func (s *mem) Len(sid string) int { - return s.values[sid].Len() + s.mu.RLock() + n := s.values[sid].Len() + s.mu.RUnlock() + + return n } func (s *mem) Delete(sid string, key string) (deleted bool) { @@ -81,9 +89,9 @@ func (s *mem) Delete(sid string, key string) (deleted bool) { } func (s *mem) Clear(sid string) { - s.mu.RLock() + s.mu.Lock() s.values[sid].Reset() - s.mu.RUnlock() + s.mu.Unlock() } func (s *mem) Release(sid string) {