aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2022-02-07 21:46:10 +0100
committerGravatar Christian Hesse <mail@eworm.de>2022-02-10 08:41:12 +0100
commit0b46c508dc8f76955dd528900882b54c07b62ef3 (patch)
tree1bd2572ad2421125b35888a0963c2ce94c1952fe
parentc6e581d4f90c9bea0adf405685aa634e264d1f3b (diff)
netwatch-notify: nest conditions
The logic here was right, but RouterOS runs the checks simultaneously. This caused delays even if no resolving was needed. Nesting the checks fixes this.
-rw-r--r--netwatch-notify32
1 files changed, 17 insertions, 15 deletions
diff --git a/netwatch-notify b/netwatch-notify
index e82cea6..34a9e8f 100644
--- a/netwatch-notify
+++ b/netwatch-notify
@@ -66,21 +66,23 @@ $ScriptLock $0;
:set $Metric ($NetwatchNotify->$HostName);
}
- :if ([ :typeof ($HostInfo->"resolve") ] = "str" && [ $DNSIsResolving ] = true) do={
- :do {
- :local Resolve [ :resolve ($HostInfo->"resolve") ];
- :if ($Resolve != $HostVal->"host") do={
- $LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \
- $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . \
- "' resolves to different address " . $Resolve . ", updating.") false;
- / tool netwatch set host=$Resolve $Host;
- :set ($Metric->"resolve-failed") false;
- }
- } on-error={
- :if ($Metric->"resolve-failed" != true) do={
- $LogPrintExit2 warning $0 ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \
- $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . "' failed.") false;
- :set ($Metric->"resolve-failed") true;
+ :if ([ :typeof ($HostInfo->"resolve") ] = "str") do={
+ :if ([ $DNSIsResolving ] = true) do={
+ :do {
+ :local Resolve [ :resolve ($HostInfo->"resolve") ];
+ :if ($Resolve != $HostVal->"host") do={
+ $LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \
+ $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . \
+ "' resolves to different address " . $Resolve . ", updating.") false;
+ / tool netwatch set host=$Resolve $Host;
+ :set ($Metric->"resolve-failed") false;
+ }
+ } on-error={
+ :if ($Metric->"resolve-failed" != true) do={
+ $LogPrintExit2 warning $0 ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \
+ $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . "' failed.") false;
+ :set ($Metric->"resolve-failed") true;
+ }
}
}
}