]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
Add configure option to force retry on DNS failure
authorMiroslav Lichvar <mlichvar@redhat.com>
Tue, 5 Apr 2011 16:14:05 +0000 (18:14 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Tue, 5 Apr 2011 16:14:05 +0000 (18:14 +0200)
This is apparently needed on system which keep nameservers specified
in /etc/resolv.conf even when there is no network connection. Should be
used with care as invalid names will be retried forever.

configure
nameserv.c

index 8fe84b30dab1652212b99a5152917fc50f0c2e2a..f3a9373399f084388ec0ad4ab700a73de736bcca 100755 (executable)
--- a/configure
+++ b/configure
@@ -102,6 +102,7 @@ For better control, use the options below.
   --disable-pps          Disable PPS API support
   --disable-rtc          Don't include RTC even on Linux
   --disable-linuxcaps    Disable Linux capabilities support
+  --enable-forcednsretry Force retry on DNS failure
 
 Fine tuning of the installation directories:
   --sysconfdir=DIR       chrony.conf location [/etc]
@@ -162,6 +163,7 @@ feat_ipv6=1
 feat_pps=1
 try_setsched=0
 try_lockmem=0
+feat_forcednsretry=0
 
 for option
 do
@@ -226,6 +228,9 @@ do
     --disable-linuxcaps)
       feat_linuxcaps=0
     ;;
+    --enable-forcednsretry)
+      feat_forcednsretry=1
+    ;;
     --host-system=* )
       OPERATINGSYSTEM=`echo $option | sed -e 's/^.*=//;'`
     ;;
@@ -399,6 +404,11 @@ then
   SYSDEFS="${SYSDEFS} -DHAVE_MLOCKALL"
 fi
 
+if [ $feat_forcednsretry = "1" ]
+then
+    EXTRA_DEFS="$EXTRA_DEFS -DFORCE_DNSRETRY=1"
+fi
+
 READLINE_COMPILE=""
 READLINE_LINK=""
 if [ $feat_readline = "1" ]; then
index 0e2d6900418645f135530e2abd7190705238a525..268ee2ee126beb884956c3d9dabb94c199af04ed 100644 (file)
@@ -56,7 +56,11 @@ DNS_Name2IPAddress(const char *name, IPAddr *addr)
   result = getaddrinfo(name, NULL, &hints, &res);
 
   if (result) {
+#ifdef FORCE_DNSRETRY
+    return DNS_TryAgain;
+#else
     return result == EAI_AGAIN ? DNS_TryAgain : DNS_Failure;
+#endif
   }
 
   for (ai = res; !result && ai != NULL; ai = ai->ai_next) {
@@ -94,8 +98,13 @@ DNS_Name2IPAddress(const char *name, IPAddr *addr)
     return DNS_Success;
   }
 
+#ifdef FORCE_DNSRETRY
+  return DNS_TryAgain;
+#else
   return DNS_Failure;
 #endif
+
+#endif
 }
 
 /* ================================================== */