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.
This commit is contained in:
Christian Hesse 2022-02-07 21:46:10 +01:00
parent c6e581d4f9
commit 0b46c508dc

View file

@ -66,21 +66,23 @@ $ScriptLock $0;
:set $Metric ($NetwatchNotify->$HostName); :set $Metric ($NetwatchNotify->$HostName);
} }
:if ([ :typeof ($HostInfo->"resolve") ] = "str" && [ $DNSIsResolving ] = true) do={ :if ([ :typeof ($HostInfo->"resolve") ] = "str") do={
:do { :if ([ $DNSIsResolving ] = true) do={
:local Resolve [ :resolve ($HostInfo->"resolve") ]; :do {
:if ($Resolve != $HostVal->"host") do={ :local Resolve [ :resolve ($HostInfo->"resolve") ];
$LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \ :if ($Resolve != $HostVal->"host") do={
$HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . \ $LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \
"' resolves to different address " . $Resolve . ", updating.") false; $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . \
/ tool netwatch set host=$Resolve $Host; "' resolves to different address " . $Resolve . ", updating.") false;
:set ($Metric->"resolve-failed") false; / tool netwatch set host=$Resolve $Host;
} :set ($Metric->"resolve-failed") false;
} on-error={ }
:if ($Metric->"resolve-failed" != true) do={ } on-error={
$LogPrintExit2 warning $0 ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \ :if ($Metric->"resolve-failed" != true) do={
$HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . "' failed.") false; $LogPrintExit2 warning $0 ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \
:set ($Metric->"resolve-failed") true; $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . "' failed.") false;
:set ($Metric->"resolve-failed") true;
}
} }
} }
} }