diff --git a/map/traffic_manager.cpp b/map/traffic_manager.cpp index 4a180371c3..8e0868a848 100644 --- a/map/traffic_manager.cpp +++ b/map/traffic_manager.cpp @@ -243,7 +243,13 @@ void TrafficManager::ThreadRoutine() traffic::TrafficInfo info(mwm, m_currentDataVersion); - if (info.ReceiveTrafficData(m_trafficETags[mwm])) + string tag; + { + lock_guard lock(m_mutex); + tag = m_trafficETags[mwm]; + } + + if (info.ReceiveTrafficData(tag)) { OnTrafficDataResponse(move(info)); } @@ -252,6 +258,11 @@ void TrafficManager::ThreadRoutine() LOG(LWARNING, ("Traffic request failed. Mwm =", mwm)); OnTrafficRequestFailed(move(info)); } + + { + lock_guard lock(m_mutex); + m_trafficETags[mwm] = tag; + } } mwms.clear(); }