From 1eb77167662a351b8167825d6176553e8de997a5 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Sat, 8 Oct 2022 22:46:28 +0200 Subject: [PATCH] Simplify group expiration. --- group/group.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/group/group.go b/group/group.go index 73a46bd..a5f0844 100644 --- a/group/group.go +++ b/group/group.go @@ -150,13 +150,17 @@ func (g *Group) ClientCount() int { return len(g.clients) } -func (g *Group) EmptyTime() time.Duration { +func (g *Group) mayExpire() bool { g.mu.Lock() defer g.mu.Unlock() - if len(g.clients) > 0 { - return 0 + + if g.description.Public { + return false } - return time.Since(g.timestamp) + if len(g.clients) > 0 { + return false + } + return time.Since(g.timestamp) > maxHistoryAge(g.description) } var groups struct { @@ -1286,7 +1290,6 @@ func Update() { } names := GetNames() - for _, name := range names { g := Get(name) if g == nil { @@ -1294,13 +1297,13 @@ func Update() { } deleted := false - historyAge := maxHistoryAge(g.description) - if !g.description.Public && g.EmptyTime() > historyAge { + if g.mayExpire() { // Delete checks if the group is still empty deleted = Delete(name) } - if !deleted && !descriptionUnchanged(name, g.description) { + // update group description + if !deleted { Add(name, nil) } }