Ver código fonte

Temporary fix to prevent early token expiry

Zed 6 anos atrás
pai
commit
db100bbf17
2 arquivos alterados com 10 adições e 3 exclusões
  1. 9 3
      src/tokens.nim
  2. 1 0
      src/types.nim

+ 9 - 3
src/tokens.nim

@@ -27,12 +27,17 @@ proc fetchToken(): Future[Token] {.async.} =
     echo "token parse fail"
     return Token()
 
+  let time = getTime()
   result = Token(tok: resp[pos+3 .. pos+21], remaining: 187,
-                 reset: getTime() + 15.minutes, init: getTime())
+                 reset: time + 15.minutes, init: time, lastUse: time)
 
 proc expired(token: Token): bool {.inline.} =
-  const expirationTime = 2.hours
-  result = token.init < getTime() - expirationTime
+  const
+    expirationTime = 2.hours
+    maxLastUse = 1.hours
+  let time = getTime()
+  result = token.init < time - expirationTime or
+           token.lastUse < time - maxLastUse
 
 proc isLimited(token: Token): bool {.inline.} =
   token == nil or (token.remaining <= 1 and token.reset > getTime()) or
@@ -40,6 +45,7 @@ proc isLimited(token: Token): bool {.inline.} =
 
 proc release*(token: Token) =
   if token != nil and not token.expired:
+    token.lastUse = getTime()
     tokenPool.insert(token)
 
 proc getToken*(): Future[Token] {.async.} =

+ 1 - 0
src/types.nim

@@ -9,6 +9,7 @@ type
     remaining*: int
     reset*: Time
     init*: Time
+    lastUse*: Time
 
   Error* = enum
     null = 0