]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: use random_u64_range() for randomizing initial transaction jitter
authorLennart Poettering <lennart@poettering.net>
Wed, 24 Mar 2021 16:17:17 +0000 (17:17 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 26 Mar 2021 10:37:54 +0000 (11:37 +0100)
src/resolve/resolved-dns-transaction.c

index f084a70e45c93a808e30be49f9a04b682803ea59..edce586e69551893df731c3b70e53116ca8020d5 100644 (file)
@@ -1941,23 +1941,20 @@ int dns_transaction_go(DnsTransaction *t) {
             IN_SET(t->scope->protocol, DNS_PROTOCOL_LLMNR, DNS_PROTOCOL_MDNS)) {
                 usec_t jitter, accuracy;
 
-                /* RFC 4795 Section 2.7 suggests all queries should be
-                 * delayed by a random time from 0 to JITTER_INTERVAL. */
+                /* RFC 4795 Section 2.7 suggests all queries should be delayed by a random time from 0 to
+                 * JITTER_INTERVAL. */
 
                 t->initial_jitter_scheduled = true;
 
-                random_bytes(&jitter, sizeof(jitter));
-
                 switch (t->scope->protocol) {
 
                 case DNS_PROTOCOL_LLMNR:
-                        jitter %= LLMNR_JITTER_INTERVAL_USEC;
+                        jitter = random_u64_range(LLMNR_JITTER_INTERVAL_USEC);
                         accuracy = LLMNR_JITTER_INTERVAL_USEC;
                         break;
 
                 case DNS_PROTOCOL_MDNS:
-                        jitter %= MDNS_JITTER_RANGE_USEC;
-                        jitter += MDNS_JITTER_MIN_USEC;
+                        jitter = usec_add(random_u64_range(MDNS_JITTER_RANGE_USEC), MDNS_JITTER_MIN_USEC);
                         accuracy = MDNS_JITTER_RANGE_USEC;
                         break;
                 default: