diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2020-06-12 11:07:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-12 11:07:26 +0100 |
commit | 079d8fe8fb521f76fee3bff5b47482d5fb911257 (patch) | |
tree | 964aacf3bdf2182a61eac14cd0e5e8e75187f7b7 /internal/caching/cache_serverkeys.go | |
parent | ec7718e7f842fa0fc5198489c904de21003db4c2 (diff) |
More key tweaks (#1116)
Diffstat (limited to 'internal/caching/cache_serverkeys.go')
-rw-r--r-- | internal/caching/cache_serverkeys.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/internal/caching/cache_serverkeys.go b/internal/caching/cache_serverkeys.go index 8c71ffbd..b5e31575 100644 --- a/internal/caching/cache_serverkeys.go +++ b/internal/caching/cache_serverkeys.go @@ -2,6 +2,7 @@ package caching import ( "fmt" + "time" "github.com/matrix-org/gomatrixserverlib" ) @@ -23,9 +24,17 @@ func (c Caches) GetServerKey( request gomatrixserverlib.PublicKeyLookupRequest, ) (gomatrixserverlib.PublicKeyLookupResult, bool) { key := fmt.Sprintf("%s/%s", request.ServerName, request.KeyID) + now := gomatrixserverlib.AsTimestamp(time.Now()) val, found := c.ServerKeys.Get(key) if found && val != nil { if keyLookupResult, ok := val.(gomatrixserverlib.PublicKeyLookupResult); ok { + if !keyLookupResult.WasValidAt(now, true) { + // We appear to be past the key validity so don't return this + // with the results. This ensures that the cache doesn't return + // values that are not useful to us. + c.ServerKeys.Unset(key) + return gomatrixserverlib.PublicKeyLookupResult{}, false + } return keyLookupResult, true } } |