summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Keller <Rainer.Keller@qt.io>2019-04-01 11:25:18 +0200
committerRainer Keller <Rainer.Keller@qt.io>2019-04-17 07:02:32 +0000
commit789a7a40d21cc46d4c84992f1e028758591411de (patch)
tree40e5ac12967a3db037e4135367e30f3ded13406b
parent97afee838172bedfb65c015fe40c3e46f34f4722 (diff)
qml: Prevent results nodes from remote servers when using a relative path
Local nodes are preferred, if any. Change-Id: I7c5037e1ed796453e19842d4754bfaa483c400c2 Reviewed-by: Jannis Völker <jannis.voelker@basyskom.com>
-rw-r--r--src/imports/opcua/opcuapathresolver.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/imports/opcua/opcuapathresolver.cpp b/src/imports/opcua/opcuapathresolver.cpp
index a933d6b..3e73e54 100644
--- a/src/imports/opcua/opcuapathresolver.cpp
+++ b/src/imports/opcua/opcuapathresolver.cpp
@@ -183,11 +183,23 @@ void OpcUaPathResolver::browsePathFinished(QVector<QOpcUaBrowsePathTarget> resul
deleteLater();
return;
} else if (results.size() == 1) {
+ if (results.at(0).targetId().serverIndex() > 0) {
+ emit resolvedNode(UniversalNode(), QString("Relative path could not be resolved: Resulting node is located on a remote server"));
+ deleteLater();
+ return;
+ }
nodeToUse.from(results.at(0));
+
} else { // greater than one
UniversalNode tmp;
+ QString message = "No resolved node found";
+
for (const auto &result : results) {
if (result.isFullyResolved()) {
+ if (result.targetId().serverIndex() > 0) {
+ message = QString("Relative path could not be resolved: Resulting node is located on a remote server");
+ continue;
+ }
if (!tmp.nodeIdentifier().isEmpty()) {
emit resolvedNode(UniversalNode(), QLatin1String("There are multiple resolved nodes"));
deleteLater();
@@ -200,7 +212,7 @@ void OpcUaPathResolver::browsePathFinished(QVector<QOpcUaBrowsePathTarget> resul
if (!tmp.nodeIdentifier().isEmpty()) {
nodeToUse = tmp;
} else {
- emit resolvedNode(UniversalNode(), QString("No resolved node found"));
+ emit resolvedNode(UniversalNode(), message);
deleteLater();
return;
}