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.

(cherry picked from commit 0b46c508dc)
This commit is contained in:
Christian Hesse 2022-02-07 21:46:10 +01:00
parent c03da561cd
commit 0c607a8f9c

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;
}
} }
} }
} }