diff --git a/src/basic/siphash24.h b/src/basic/siphash24.h index 54e2420cc6..70a4a03f6a 100644 --- a/src/basic/siphash24.h +++ b/src/basic/siphash24.h @@ -3,6 +3,7 @@ #include #include #include +#include #include struct siphash { @@ -21,3 +22,7 @@ void siphash24_compress(const void *in, size_t inlen, struct siphash *state); uint64_t siphash24_finalize(struct siphash *state); uint64_t siphash24(const void *in, size_t inlen, const uint8_t k[16]); + +static inline uint64_t siphash24_string(const char *s, const uint8_t k[16]) { + return siphash24(s, strlen(s) + 1, k); +} diff --git a/src/journal/journald-rate-limit.c b/src/journal/journald-rate-limit.c index 6a8a36a736..a175c1f68f 100644 --- a/src/journal/journald-rate-limit.c +++ b/src/journal/journald-rate-limit.c @@ -128,7 +128,6 @@ static void journal_rate_limit_vacuum(JournalRateLimit *r, usec_t ts) { static JournalRateLimitGroup* journal_rate_limit_group_new(JournalRateLimit *r, const char *id, usec_t ts) { JournalRateLimitGroup *g; - struct siphash state; assert(r); assert(id); @@ -141,9 +140,7 @@ static JournalRateLimitGroup* journal_rate_limit_group_new(JournalRateLimit *r, if (!g->id) goto fail; - siphash24_init(&state, r->hash_key); - string_hash_func(g->id, &state); - g->hash = siphash24_finalize(&state); + g->hash = siphash24_string(g->id, r->hash_key); journal_rate_limit_vacuum(r, ts); @@ -193,7 +190,6 @@ int journal_rate_limit_test(JournalRateLimit *r, const char *id, int priority, u uint64_t h; JournalRateLimitGroup *g; JournalRateLimitPool *p; - struct siphash state; unsigned burst; usec_t ts; @@ -216,9 +212,7 @@ int journal_rate_limit_test(JournalRateLimit *r, const char *id, int priority, u ts = now(CLOCK_MONOTONIC); - siphash24_init(&state, r->hash_key); - string_hash_func(id, &state); - h = siphash24_finalize(&state); + h = siphash24_string(id, r->hash_key); g = r->buckets[h % BUCKETS_MAX]; LIST_FOREACH(bucket, g, g)