diff --git a/global-functions.rsc b/global-functions.rsc index f2b13113..c9440ed7 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -812,16 +812,16 @@ # check if DNS is resolving :set IsDNSResolving do={ :do { - :resolve "low-ttl.eworm.de"; - :return true; - } on-error={ } + :local I 1; + :retry { + :set I ($I ^ 1); + :resolve ("low-ttl.eworm." . ({ "de"; "net" }->$I)); + } delay=50ms max=6; + } on-error={ + :return false; + } - :do { - :resolve "low-ttl.eworm.net"; - :return true; - } on-error={ } - - :return false; + :return true; } # check if system is is fully connected (default route reachable, DNS resolving, time sync) diff --git a/netwatch-dns.rsc b/netwatch-dns.rsc index 9531d4ad..7c6a7b5b 100644 --- a/netwatch-dns.rsc +++ b/netwatch-dns.rsc @@ -115,13 +115,15 @@ :local Data false; :onerror Err { + :local I 1; :retry { + :set I ($I ^ 1); :set Data ([ /tool/fetch check-certificate=yes-without-crl output=user \ http-header-field=({ "accept: application/dns-message" }) \ url=(($DohServer->"doh-url") . "?dns=" . [ :convert to=base64 ([ :rndstr length=2 ] . \ - "\01\00" . "\00\01" . "\00\00" . "\00\00" . "\00\00" . "\09doh-check\05eworm\02de\00" . \ - "\00\10" . "\00\01") ]) as-value ]->"data"); - } delay=1s max=3; + "\01\00" . "\00\01" . "\00\00" . "\00\00" . "\00\00" . "\09doh-check\05eworm" . \ + ({ "\02de"; "\03net" }->$I) . "\00" . "\00\10" . "\00\01") ]) as-value ]->"data"); + } delay=500ms max=6; } do={ $LogPrint warning $ScriptName ("Request to DoH server " . ($DohServer->"doh-url") . \ " failed: " . $Err);