diff --git a/src/core/thread/address_resolver.cpp b/src/core/thread/address_resolver.cpp index 2206d2276..f4e981f26 100644 --- a/src/core/thread/address_resolver.cpp +++ b/src/core/thread/address_resolver.cpp @@ -652,14 +652,16 @@ void AddressResolver::HandleTimer() if (mCache[i].mTimeout == 0) { - mCache[i].mFailures++; mCache[i].mRetryTimeout = static_cast(kAddressQueryInitialRetryDelay * (1 << mCache[i].mFailures)); - if (mCache[i].mRetryTimeout > kAddressQueryMaxRetryDelay) + if (mCache[i].mRetryTimeout < kAddressQueryMaxRetryDelay) + { + mCache[i].mFailures++; + } + else { mCache[i].mRetryTimeout = kAddressQueryMaxRetryDelay; - mCache[i].mFailures--; } mMeshForwarder.HandleResolved(mCache[i].mTarget, kThreadError_Drop);