diff --git a/server/gamesapi/service/sapi_forward.go b/server/gamesapi/service/sapi_forward.go index 1f4e8064..04b8e8be 100644 --- a/server/gamesapi/service/sapi_forward.go +++ b/server/gamesapi/service/sapi_forward.go @@ -62,7 +62,11 @@ func (this *sApiForward) AcquireLock(accountId string) *SApiForwardLock { func (this *sApiForward) ReleaseLock(l *SApiForwardLock) { l.lock.Unlock() - atomic.AddInt32(&l.lockTimes, -1) + if atomic.AddInt32(&l.lockTimes, -1) < 1 { + crc32 := q5.Crc32(l.accountId) + c := this.userCache[int64(crc32)%int64(len(this.userCache))] + delete(*c.userHash, l.accountId) + } } func (this *sApiForward) IncInvalidSessionTimes() { @@ -119,6 +123,7 @@ func (this *sApiForward) getOrCreate(c *SApiForwardLockCache, accountId string) u = new(SApiForwardLock) u.accountId = accountId u.lock = new(sync.Mutex) + (*c.userHash)[accountId] = u return u } }