From: Miroslav Lichvar Date: Wed, 3 Aug 2022 11:17:42 +0000 (+0200) Subject: configure: disable arc4random on Linux X-Git-Tag: 4.3-pre1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d91ae2094fa87094430392acd9fd54b4132ba9f1;p=thirdparty%2Fchrony.git configure: disable arc4random on Linux In glibc 2.36 was added the arc4random family of functions. However, unlike on other supported systems, it is not a user-space PRNG implementation. It just wraps the getrandom() system call with no buffering, which causes a performance loss on NTP servers due to the function being called twice for each response to add randomness to the RX and TX timestamp below the clock precision. Don't check for arc4random on Linux to keep using the buffered getrandom(). --- diff --git a/configure b/configure index ed230f39..fd777c8e 100755 --- a/configure +++ b/configure @@ -245,6 +245,7 @@ try_lockmem=0 feat_asyncdns=1 feat_forcednsretry=1 try_clock_gettime=1 +try_arc4random=1 try_recvmmsg=1 feat_timestamping=1 try_timestamping=0 @@ -421,6 +422,7 @@ case $OPERATINGSYSTEM in try_setsched=1 try_lockmem=1 try_phc=1 + try_arc4random=0 add_def LINUX echo "Configuring for " $SYSTEM ;; @@ -702,8 +704,10 @@ then use_pthread=1 fi -if test_code 'arc4random_buf()' 'stdlib.h' '' '' \ - 'arc4random_buf((void *)1, 1);'; then +if [ $try_arc4random = "1" ] && \ + test_code 'arc4random_buf()' 'stdlib.h' '' '' \ + 'arc4random_buf((void *)1, 1);' +then add_def HAVE_ARC4RANDOM else if test_code 'getrandom()' 'stdlib.h sys/random.h' '' '' \