diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index b97469db7..a30208456 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -196,10 +196,16 @@ otError Mac::ActiveScan(uint32_t aScanChannels, uint16_t aScanDuration, ActiveSc { otError error; - SuccessOrExit(error = Scan(kOperationActiveScan, aScanChannels, aScanDuration, aContext)); mActiveScanHandler = aHandler; + SuccessOrExit(error = Scan(kOperationActiveScan, aScanChannels, aScanDuration, aContext)); exit: + + if (OT_ERROR_NONE != error) + { + mActiveScanHandler = NULL; + } + return error; } @@ -207,10 +213,16 @@ otError Mac::EnergyScan(uint32_t aScanChannels, uint16_t aScanDuration, EnergySc { otError error; - SuccessOrExit(error = Scan(kOperationEnergyScan, aScanChannels, aScanDuration, aContext)); mEnergyScanHandler = aHandler; + SuccessOrExit(error = Scan(kOperationEnergyScan, aScanChannels, aScanDuration, aContext)); exit: + + if (OT_ERROR_NONE != error) + { + mEnergyScanHandler = NULL; + } + return error; }