diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index c08408062c..81cdafe4ce 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -57,9 +57,7 @@ void RoutingSession::DoReadyCallback::operator()(Route & route, IRouter::ResultC threads::MutexGuard guard(m_routeSessionMutexInner); UNUSED_VALUE(guard); - m_rs.AssignRoute(route); - if (e != IRouter::NoError) - m_rs.m_state = RouteNotReady; + m_rs.AssignRoute(route, e); m_callback(m_rs.m_route, e); } @@ -214,10 +212,18 @@ void RoutingSession::GetRouteFollowingInfo(FollowingInfo & info) } } -void RoutingSession::AssignRoute(Route & route) +void RoutingSession::AssignRoute(Route & route, IRouter::ResultCode e) { - if (route.IsValid()) - m_state = RouteNotStarted; + if (e != IRouter::Cancelled) + { + if (route.IsValid()) + m_state = RouteNotStarted; + else + m_state = RoutingNotActive; + + if (e != IRouter::NoError) + m_state = RouteNotReady; + } else m_state = RoutingNotActive; diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index 08fdb5b983..3d4a4acb31 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -105,7 +105,7 @@ private: void operator()(Route & route, IRouter::ResultCode e); }; - void AssignRoute(Route & route); + void AssignRoute(Route & route, IRouter::ResultCode e); /// RemoveRoute removes m_route and resets route attributes (m_state, m_lastDistance, m_moveAwayCounter). void RemoveRoute(); void RemoveRouteImpl();