summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/geoservices/osm/qgeoroutereplyosm.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp b/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp
index 79298543..740828f3 100644
--- a/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp
+++ b/src/plugins/geoservices/osm/qgeoroutereplyosm.cpp
@@ -339,6 +339,7 @@ void QGeoRouteReplyOsm::networkReplyFinished()
if (m_reply->error() != QNetworkReply::NoError) {
setError(QGeoRouteReply::CommunicationError, m_reply->errorString());
m_reply->deleteLater();
+ m_reply = 0;
return;
}
@@ -348,8 +349,18 @@ void QGeoRouteReplyOsm::networkReplyFinished()
QJsonObject object = document.object();
//double version = object.value(QStringLiteral("version")).toDouble();
- //int status = object.value(QStringLiteral("status")).toDouble();
- //QString statusMessage = object.value(QStringLiteral("status_message")).toString();
+ int status = object.value(QStringLiteral("status")).toDouble();
+ QString statusMessage = object.value(QStringLiteral("status_message")).toString();
+
+ // status code is 0 in case of success
+ // status code is 207 if no route was found
+ // an error occurred when trying to find a route
+ if (0 != status) {
+ setError(QGeoRouteReply::UnknownError, statusMessage);
+ m_reply->deleteLater();
+ m_reply = 0;
+ return;
+ }
QJsonObject routeSummary = object.value(QStringLiteral("route_summary")).toObject();
@@ -388,6 +399,7 @@ void QGeoRouteReplyOsm::networkReplyFinished()
}
m_reply->deleteLater();
+ m_reply = 0;
}
void QGeoRouteReplyOsm::networkReplyError(QNetworkReply::NetworkError error)