diff --git a/app/stats/online_map.go b/app/stats/online_map.go index 6f7a6701..a7933fdb 100644 --- a/app/stats/online_map.go +++ b/app/stats/online_map.go @@ -40,13 +40,13 @@ func (c *OnlineMap) AddIP(ip string) { if ip == "127.0.0.1" { return } + c.access.Lock() - if _, ok := c.ipList[ip]; !ok { - c.ipList[ip] = time.Now() - } + c.ipList[ip] = time.Now() c.access.Unlock() + if time.Since(c.lastCleanup) > c.cleanupPeriod { - c.RemoveExpiredIPs(c.ipList) + c.RemoveExpiredIPs() c.lastCleanup = time.Now() } } @@ -62,23 +62,22 @@ func (c *OnlineMap) GetKeys() []string { return keys } -func (c *OnlineMap) RemoveExpiredIPs(list map[string]time.Time) map[string]time.Time { +func (c *OnlineMap) RemoveExpiredIPs() { c.access.Lock() defer c.access.Unlock() now := time.Now() - for k, t := range list { + for k, t := range c.ipList { diff := now.Sub(t) if diff.Seconds() > 20 { - delete(list, k) + delete(c.ipList, k) } } - return list } func (c *OnlineMap) IpTimeMap() map[string]time.Time { if time.Since(c.lastCleanup) > c.cleanupPeriod { - c.RemoveExpiredIPs(c.ipList) + c.RemoveExpiredIPs() c.lastCleanup = time.Now() }