# HG changeset patch # User Sascha L. Teichmann # Date 1532245367 -7200 # Node ID 6a802aed7f994fdb078579c777f5c2ca0b2c9a16 # Parent dba50c51cda7873459559e5ac8336980bbbe3797 Persistent session store: Implemented cleanDB/cleanToken. diff -r dba50c51cda7 -r 6a802aed7f99 auth/persistent.go --- 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) {