diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/geoservices/osm/qgeoroutereplyosm.cpp | 16 |
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) |