]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
resolv: Fix processing more DNSSL options than RDNSS
authorRoy Marples <roy@marples.name>
Tue, 15 Apr 2025 10:03:37 +0000 (11:03 +0100)
committerRoy Marples <roy@marples.name>
Tue, 15 Apr 2025 10:03:37 +0000 (11:03 +0100)
hooks/20-resolv.conf

index 7c29e2765b36c98df0ccaf5ba913a78fdea8f063..bd0b0df562242ed572499608e25a0f3ccfb256de 100644 (file)
@@ -81,21 +81,30 @@ eval_nd_dns()
 {
 
        eval rdnsstime=\$nd${i}_rdnss${j}_lifetime
-       [ -z "$rdnsstime" ] && return 1
-       ltime=$(($rdnsstime - $offset))
-       if [ "$ltime" -gt 0 ]; then
-               eval rdnss=\$nd${i}_rdnss${j}_servers
-               [ -n "$rdnss" ] && new_rdnss="$new_rdnss${new_rdnss:+ }$rdnss"
+       if [ -n "$rdnsstime" ]; then
+               ltime=$(($rdnsstime - $offset))
+               if [ "$ltime" -gt 0 ]; then
+                       eval rdnss=\$nd${i}_rdnss${j}_servers
+                       if [ -n "$rdnss" ]; then
+                               new_rdnss="$new_rdnss${new_rdnss:+ }$rdnss"
+                       fi
+               fi
        fi
 
        eval dnssltime=\$nd${i}_dnssl${j}_lifetime
-       [ -z "$dnssltime" ] && return 1
-       ltime=$(($dnssltime - $offset))
-       if [ "$ltime" -gt 0 ]; then
-               eval dnssl=\$nd${i}_dnssl${j}_search
-               [ -n "$dnssl" ] && new_dnssl="$new_dnssl${new_dnssl:+ }$dnssl"
+       if [ -n "$dnssltime" ]; then
+               ltime=$(($dnssltime - $offset))
+               if [ "$ltime" -gt 0 ]; then
+                       eval dnssl=\$nd${i}_dnssl${j}_search
+                       if [ -n "$dnssl" ]; then
+                               new_dnssl="$new_dnssl${new_dnssl:+ }$dnssl"
+                       fi
+               fi
        fi
 
+       # Break when we don't have either
+       [ -z "$rdnsstime" ] && [ -z "$dnssltime" ] && return 1
+
        j=$(($j + 1))
        return 0
 }