From f869bb659fbd6c06b773ffe4a238509146dd4553 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 6 May 2026 09:21:44 +0200 Subject: [PATCH 1/2] global-functions: $IsDNSResolving: check with :retry --- global-functions.rsc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/global-functions.rsc b/global-functions.rsc index f2b13113..fb76047e 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -812,13 +812,12 @@ # check if DNS is resolving :set IsDNSResolving do={ :do { - :resolve "low-ttl.eworm.de"; - :return true; - } on-error={ } - - :do { - :resolve "low-ttl.eworm.net"; - :return true; + :local I 1; + :retry { + :set I ($I ^ 1); + :resolve ("low-ttl.eworm." . ({ "de"; "net" }->$I)); + :return true; + } delay=50ms max=6; } on-error={ } :return false; From 348dabde15825464c0f394d94977e63048f6e5cc Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 6 May 2026 09:06:26 +0200 Subject: [PATCH 2/2] netwatch-dns: check with eworm.de and eworm.net This should prevent against DENIC outages... https://blog.denic.de/en/denic-reports-resolved-dnssec-disruption-affecting-de-domains/ --- netwatch-dns.rsc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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);