Mercurial > gemma
changeset 203:6a802aed7f99
Persistent session store: Implemented cleanDB/cleanToken.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 22 Jul 2018 09:42:47 +0200 |
parents | dba50c51cda7 |
children | 3d0988d9f867 |
files | auth/persistent.go |
diffstat | 1 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/auth/persistent.go Sun Jul 22 09:38:38 2018 +0200 +++ b/auth/persistent.go Sun Jul 22 09:42:47 2018 +0200 @@ -73,11 +73,25 @@ } func (pcp *PersistentConnectionPool) cleanDB() { - log.Println("cleanDB: Not implemented, yet.") + valid := time.Now().Add(-maxDBIdle) + for _, con := range pcp.conns { + if con.refCount <= 0 && con.last().Before(valid) { + con.close() + } + } } func (pcp *PersistentConnectionPool) cleanToken() { - log.Println("cleanToken: Not implemented, yet.") + now := time.Now() + for token, con := range pcp.conns { + expires := time.Unix(con.session.ExpiresAt, 0) + if expires.Before(now) { + // TODO: Be more graceful here? + con.close() + delete(pcp.conns, token) + pcp.remove(token) + } + } } func (pcp *PersistentConnectionPool) remove(token string) {