From: Miroslav Lichvar Date: Thu, 20 Mar 2014 17:12:46 +0000 (+0100) Subject: keys: don't cache position for unknown keys X-Git-Tag: 1.30-pre1~127 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0059a432548c55d821888fec07abbaee0617e8a9;p=thirdparty%2Fchrony.git keys: don't cache position for unknown keys --- diff --git a/keys.c b/keys.c index 86a83bc5..e6fcfe41 100644 --- a/keys.c +++ b/keys.c @@ -295,13 +295,20 @@ lookup_key(unsigned long id) static int get_key_pos(unsigned long key_id) { - if (!cache_valid || key_id != cache_key_id) { + int position; + + if (cache_valid && key_id == cache_key_id) + return cache_key_pos; + + position = lookup_key(key_id); + + if (position >= 0) { cache_valid = 1; - cache_key_pos = lookup_key(key_id); + cache_key_pos = position; cache_key_id = key_id; } - return cache_key_pos; + return position; } /* ================================================== */ @@ -321,25 +328,7 @@ KEY_GetCommandKey(void) int KEY_KeyKnown(unsigned long key_id) { - int position; - - if (cache_valid && (key_id == cache_key_id)) { - return 1; - } else { - - position = lookup_key(key_id); - - if (position >= 0) { - /* Store key in cache, we will probably be using it in a - minute... */ - cache_valid = 1; - cache_key_pos = position; - cache_key_id = key_id; - return 1; - } else { - return 0; - } - } + return get_key_pos(key_id) >= 0; } /* ================================================== */