From 65df107eacdce46b01dddee3d1518c88d346a4d6 Mon Sep 17 00:00:00 2001 From: comwrg Date: Fri, 2 Nov 2018 09:58:40 +0800 Subject: [PATCH] more readable for func `generateNewHashes` in `proxy/vmess/validator.go` --- proxy/vmess/validator.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/proxy/vmess/validator.go b/proxy/vmess/validator.go index b322604a..dc244634 100644 --- a/proxy/vmess/validator.go +++ b/proxy/vmess/validator.go @@ -56,13 +56,14 @@ func NewTimedUserValidator(hasher protocol.IDHash) *TimedUserValidator { func (v *TimedUserValidator) generateNewHashes(nowSec protocol.Timestamp, user *user) { var hashValue [16]byte + genEndSec := nowSec + cacheDurationSec genHashForID := func(id *protocol.ID) { idHash := v.hasher(id.Bytes()) - lastSec := user.lastSec - if lastSec < nowSec-cacheDurationSec*2 { - lastSec = nowSec - cacheDurationSec*2 + genBeginSec := user.lastSec + if genBeginSec < nowSec-cacheDurationSec { + genBeginSec = nowSec - cacheDurationSec } - for ts := lastSec; ts <= nowSec; ts++ { + for ts := genBeginSec; ts <= genEndSec; ts++ { common.Must2(idHash.Write(ts.Bytes(nil))) idHash.Sum(hashValue[:0]) idHash.Reset() @@ -80,7 +81,7 @@ func (v *TimedUserValidator) generateNewHashes(nowSec protocol.Timestamp, user * for _, id := range account.AlterIDs { genHashForID(id) } - user.lastSec = nowSec + user.lastSec = genEndSec } func (v *TimedUserValidator) removeExpiredHashes(expire uint32) { @@ -93,7 +94,7 @@ func (v *TimedUserValidator) removeExpiredHashes(expire uint32) { func (v *TimedUserValidator) updateUserHash() { now := time.Now() - nowSec := protocol.Timestamp(now.Unix() + cacheDurationSec) + nowSec := protocol.Timestamp(now.Unix()) v.Lock() defer v.Unlock() @@ -118,7 +119,7 @@ func (v *TimedUserValidator) Add(u *protocol.MemoryUser) error { lastSec: protocol.Timestamp(nowSec - cacheDurationSec), } v.users = append(v.users, uu) - v.generateNewHashes(protocol.Timestamp(nowSec+cacheDurationSec), uu) + v.generateNewHashes(protocol.Timestamp(nowSec), uu) return nil }