diff options
author | Rainer Keller <Rainer.Keller@qt.io> | 2019-04-01 11:25:18 +0200 |
---|---|---|
committer | Rainer Keller <Rainer.Keller@qt.io> | 2019-04-17 07:02:32 +0000 |
commit | 789a7a40d21cc46d4c84992f1e028758591411de (patch) | |
tree | 40e5ac12967a3db037e4135367e30f3ded13406b | |
parent | 97afee838172bedfb65c015fe40c3e46f34f4722 (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.cpp | 14 |
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; } |