no list.Remove() need or ChangeID

This commit is contained in:
DarkGopher 2025-06-19 14:43:07 +02:00
parent ffd730b057
commit 44330e3eab
2 changed files with 42 additions and 10 deletions

View file

@ -57,7 +57,7 @@ func (pder *ProviderMemory) Exists(sid string) (ex bool) {
return
}
// read return existing unexpired session or create new
// Load return existing unexpired session or create new
func (pder *ProviderMemory) Load(sid string) (ses session.Session, err error) {
pder.lock.Lock()
defer pder.lock.Unlock()
@ -72,8 +72,8 @@ func (pder *ProviderMemory) Destroy(sid string) (err error) {
pder.lock.Lock()
defer pder.lock.Unlock()
if ssel, ok := pder.sessions[sid]; ok {
delete(pder.sessions, sid)
pder.list.Remove(ssel)
delete(pder.sessions, sid)
return nil
}
return
@ -84,11 +84,10 @@ func (pder *ProviderMemory) ChangeID(oldsid, newsid string) (err error) {
pder.lock.Lock()
defer pder.lock.Unlock()
if ssel, ok := pder.sessions[oldsid]; ok {
ssel.Value.(*SessionMemory).sid = newsid
le := pder.sessions[oldsid]
pder.list.Remove(le)
delete(pder.sessions, oldsid)
pder.sessions[newsid] = ssel
ssel.Value.(*SessionMemory).sid = newsid //set internal sid to new
le := pder.sessions[oldsid] //get list el with old sid
delete(pder.sessions, oldsid) //remove old sid in map
pder.sessions[newsid] = le //add new sid into map
}
return
}